我正在为一家小型酒店开发预订系统。我非常擅长 PHP,但不太擅长 SQL...我制作了一个表格,您可以在其中输入您的信息、房间数量并使用日历选择到达日期和退房日期。
现在一切都很顺利,直到我不得不检查哪些房间可用,这让我很头疼。您可以预订 10 间客房。
我目前在 MySQL 中有一张表存储信息、日期、预订 ID 和房间 ID/号码。
您将如何编写 SQL 来检查哪些房间可用,哪些不可用?
它应该看起来像
"SELECT * FROM bookings WHERE checkinDate >= '$formCheckin'
AND checkoutDate <= '$formCheckout' "
然后获取roomID并统计?
非常感谢任何帮助!
最佳答案
如果你想知道一个房间在一段时间内是否可用,那么逻辑如下:
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 天只有一个人在房间里。
关于php - 酒店房间预订/预订,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33055270/