我正在为一家小旅馆开发预订系统。我对PHP很在行,但对SQL不太在行。。。我做了一个表格,你可以输入你的信息,房间的数量,然后用日历选择到达日期和退房日期。
现在一切都很顺利,直到我到了一个地步,你必须检查哪些房间是可用的,这让我头痛。你可以预订10个房间。
我目前在MySQL中有一个表,存储信息、日期、预订ID和房间ID/号码。
如何使用SQL来检查哪些房间是可用的而哪些房间不是可用的?
是不是看起来像
"SELECT * FROM bookings WHERE checkinDate >= '$formCheckin'
AND checkoutDate <= '$formCheckout' "
然后拿到房间号数一数?
非常感谢您的帮助!
最佳答案
如果您想知道某个时段内是否有房间可用,那么逻辑如下:
SELECT r.*
FROM rooms r
WHERE NOT EXISTS (SELECT 1
FROM bookings b
WHERE b.roomid = r.roomid AND
b.checkinDate <= $formCheckOut AND
b.checkoutDate >= '$formCheckIn
);
我不确定这两种情况是否需要平等比较。其逻辑是,如果没有在结账日期之前开始的预订和在结账日期之后结束的预订,则房间是可用的。
但是,对于十个房间,我建议您每天为每个房间保留一张桌子,比如说在接下来的十年(每年增加一次)。这样的桌子不是很大,可能更容易理解如何使用。另外,你可以处理一些事情,比如一对夫妇预订一个星期的房间,但是在头三天只有一个人在房间里。
关于php - 酒店客房预订/预订,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33055270/