我正在编写一个酒店预订系统。在大量学习(包括研究 Stack Overflow )之后,我编写了以下 SQL 以查找空闲房间:
SELECT
*
FROM room
WHERE
room_id NOT IN (
SELECT room_id
FROM bookings
WHERE
checkin <= '$check_in'
AND checkout >= '$check_out'
)
但问题在于它没有考虑到时间检查是12:00:00和退房时间是11:59:00。
此外,它没有给出正确的查询结果,例如在日期范围内不起作用。例如,如果我预订了一个编号为501的单人间,入住日期为15-18日。如果我再次运行一个查询17-19,这个房间看起来是空闲的,但实际上它应该是被占用的。
有人能建议一个非常好的和有效的SQL语句,以获得准确的日期,以便预订系统不会发生冲突,因为该系统将在实际中实现,错误将导致许多问题。
提前感谢。