2013-12-16 90 views
0

每个人。我的网上酒店预订的任务有问题,我的问题很难检查可用的房间。所以我有很多像这样的表格:使用MySql检查可用空间

tbRoom(RoomID,RoomName,...) 
tbReservation(ResID,ResDate,....) 
tbReservationDetail(ResID,RoomID,ArrvialDate,DepartureDate,....) 

我想要在两个日期之间得到房间。

那么,我该怎么做?或者我需要创建更多的表格吗?

请帮助我,感谢帮助....

回答

1

您可以选择保留客房和反转:

SELECT * FROM tbRoom WHERE RoomID NOT IN (SELECT RoomID FROM tbReservationDetail WHERE ArrvialDate < yourDate AND DepartureDate > yourDate) 
+0

对不起,您的查询工作不总是调用所有RoomID甚至,我把日期日期是ArrivalDate和DepartureDate之间....请帮帮忙,我等着你的帮助.... – user3108220

0

你可以使用你上面指定的3个表实现您的结果。但只有你必须改变的是你还必须使用表中的RoomID表。

rbRoom - >商店不同的房间
tbReservation - >当一个房间被保留此表将举行RoomID和预约ID tbReservationDetail - >存储与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) 
+0

Th为你提供帮助 – user3108220