大家。我的在线酒店预订任务有问题,我的问题很难检查可用房间。所以我有很多表:
tbRoom(RoomID,RoomName,...)
tbReservation(ResID,ResDate,....)
tbReservationDetail(ResID,RoomID,ArrvialDate,DepartureDate,....)
我想在两个日期之间获得房间。
所以,我该怎么做?还是我需要创建更多表格?
请帮帮我,谢谢你的帮助....
答案 0 :(得分:1)
您可以选择预订的房间并反转:
SELECT * FROM tbRoom WHERE RoomID NOT IN (SELECT RoomID FROM tbReservationDetail WHERE ArrvialDate < yourDate AND DepartureDate > yourDate)
答案 1 :(得分:0)
您可以使用指定的上述3个表格来获得结果。但只有你必须改变的是,你必须使用RoomID
表中提交的tbReservation
。
rbRoom
- &gt;存放不同的房间
tbReservation
- &gt;当预订房间时,此表将保留RoomID和预订ID
tbReservationDetail
- &gt;存储有关arrivalDate,DepartureDate等的其他详细信息。
然后按照以下查询
SELECT * FROM tbRoom WHERE RoomID NOT IN (SELECT RoomID FROM tbReservation
tr,tbReservationDetail td WHERE td.ArrvialDate < yourDate AND
td.DepartureDate > yourDate and tr.RoomID=td.RoomID)