我正在为一家小旅馆预订/预订系统。我对PHP非常好,但对SQL不太好...我做了一个表格,您可以输入您的信息,房间数量,并使用日历选择到达日期和退房日期。
现在一切顺利,直到我到了必须检查哪些房间可用的地方,这让我很头疼。有10间房间可供预订。
我目前在MySQL中有一个表存储信息,日期,预订ID和房间ID /号码。
如何使用SQL来检查哪些房间可用而不是?
应该看起来像
"SELECT * FROM bookings WHERE checkinDate >= '$formCheckin'
AND checkoutDate <= '$formCheckout' "
然后获取roomID并计算它们?
非常感谢任何帮助!
答案 0 :(得分:2)
如果您想知道一段时间内房间是否可用,那么逻辑如下:
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
);
我不确定这两者是否都需要进行相等比较。逻辑是,如果没有预订在结账日期之前开始并且在结账日期之后结束,则可以使用房间。
然而,对于十个房间,我可能会建议您每天保留一个每个房间的桌子,比如说未来十年(每年再增加一年)。这样的表格不是很大,可能更容易理解如何使用它。另外,你可以处理像一对夫妇预订房间一周的事情,但前3天只有一个人在房间里。