简体   繁体   English

列出2009年5月,6月和7月几个月价格超过8000美元的预订房间

[英]Give a list of booked rooms for months of May, Jun And July 2009, having price greater than 8000 per day

Tables 桌子

Hotel    (hotelNo, HotelName, city)

Room     (roomNo, hotelNo, type, price)

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

Guest    (guestNo, guestName, guestAddress)

Give the Structured Query Language syntax for the following query based upon the above tables: 根据上表,为以下查询提供结构化查询语言语法:

Give a list of booked rooms for months of May, Jun And July 2009, having price greater than 8000 per day. 列出2009年5月,6月和7月几个月价格超过8000美元的预订房间。

I tried the following, but it's not working: 我尝试了以下操作,但不起作用:

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

The price is a Room attribute not an Hotel attribute. 价格是“房间”属性而不是“酒店”属性。 But I guess you might be handling several hotels which overlapping room numbers, so you have to match roomNo and hotelNo 但我想您可能正在处理几间客房号重叠的酒店,因此您必须将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'

Edit: in your question the field is hotleNo so I'll stick to that field name 编辑:在您的问题字段是hotleNo,所以我会坚持该字段名称

You can try the below. 您可以尝试以下方法。 Since all your information needed can be retrieve from table Booking and Room , you only need to join the 2 and get the data. 由于您需要的所有信息都可以从BookingRoom表中检索到,因此您只需将2加入并获取数据。

select B.* from Booking B
left outer join Room  R   
on    R.roomNo   = B.roomNo
where B.dateFrom >= '2009-05-01'
and   B.dateTo   <=   '2009-07-31'
and   R.price    > 8000

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM