0

所以我有这些桌子

桌房

房间号 | 房间名称 |房间容量

订桌

预订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 和时间(白天/晚上/全天)获取可用房间吗?

4

0 回答 0