mysql - 给出 2009 年 5 月、6 月和 7 月的预订房间列表,价格大于每天 8000

标签 mysql sql database date

表格

Hotel    (hotelNo, HotelName, city)

Room     (roomNo, hotelNo, type, price)

Booking  (hotelNo, guestNo, dateFrom, dateTo, roomNo)

Guest    (guestNo, guestName, guestAddress)

根据上表给出下列查询的结构化查询语言语法:

给出 2009 年 5 月、6 月和 7 月的预订房间列表,价格大于每天 8000。

我尝试了以下方法,但它不起作用:

SELECT *
FROM Booking 
WHERE HotleNo IN (SELECT HotelNo FROM Room WHERE Price>8000)
AND (DateFrom>= '2009-05-01' AND dateTo<= '2009-07-31');

最佳答案

价格是房间属性而不是酒店属性。但我猜你可能要处理几家房间号重叠的酒店,所以你必须匹配 roomNo 和 hotelNo

SELECT *
FROM Booking 
JOIN Room on Booking.roomNo=Room.roomNo and Booking.hotleNo=Room.hotleNo
WHERE Room.Price>8000
AND Booking.DateFrom>= '2009-05-01' 
AND Booking.dateTo<= '2009-07-31'

编辑:在你的问题中,该字段是 hotleNo 所以我会坚持使用该字段名称

关于mysql - 给出 2009 年 5 月、6 月和 7 月的预订房间列表,价格大于每天 8000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25385479/

相关文章:

sql - Snowflake 中 COPY INTO 命令中的正则表达式

SQL - 在一行 SQL 中设置两个不同的值

mysql - 启用存档引擎

php - 发票平面 : List Payment Transaction on Invoice

MySQL:如何将参数传递给触发器

ruby-on-rails - 嵌套连接表上的 Rails 4 where 子句

sql - 如何处理数据库中的 DELETE(将已删除的实体移动到存档表)?

php - 我应该在这里使用什么样的 JOIN?

mysql - 连接优化

从表单创建 PHP 动态查询