所以我有这些桌子
桌房
房间号 | 房间名称 |房间容量
订桌
预订ID | 房间号 | 开始日期 | 结束日期 | 预订状态
现在,它只是一个普通的房间预订,只是它具有预订状态。
因为我的计划是用户可以在白天/晚上/全天预订 3 种不同选择的度假村,
规则
- 如果 booking_status = "day" 意味着它仍然可以在晚上使用,
- 如果 booking_status = "night",白天仍然可用,
- 如果 booking status = "wholeday" 那么那一天已经不可用了。
我想要的是假设用户想要在 2017 年 8 月 8 日的“天”预订房间,我只想显示在该日期和“天”可用的房间
这是我到目前为止所做的。但它没有显示我想要的结果。
SELECT room_id FROM room Left join booking ON room.room_id = booking.room_id
WHERE booking.booking_status = "night" AND booking.start_date = "2017-08-08"
OR (booking.start_date <> = "2017-08-08"
OR booking.room_id <> any (SELECT booking.room_id
FROM booking
WHERE booking.start_date = "2017-08-08"
AND booking.booking_status = "wholeday"))
看,在我的查询中,我使用WHERE booking.booking_status = "night"
了因为用户想要搜索“一天”中可用的房间(参见规则)。我知道这有点令人困惑。那么,你们能帮我编写查询以根据 start_date、end_date 和时间(白天/晚上/全天)获取可用房间吗?