Mysql:日期比较和加入

时间:2015-03-02 21:34:19

标签: mysql

我正在尝试运行查询以提取可用房间,并且它会加入预订表以查看给定时段(开始日期和结束日期)的可用房间。我在这里画一个空白,我认为这是一个非常简单的查询,我只是想不出创建它的最佳方法。

到目前为止我需要修复的内容

   SELECT *
     FROM room
LEFT JOIN reservation ON room.id = reservation.room_id
    WHERE reservation.id is null or 
          :startdate > reservation.enddate or 
          :enddate   < reservation.startdate

我的上述查询将返回具有多个可能满足where子句的预订的房间的结果,即使可以在日期范围内进行预订。

1 个答案:

答案 0 :(得分:1)

我会使用not exists谓词来做到这一点,我觉得这很直观:

SELECT *
FROM room
WHERE NOT EXISTS (
    SELECT *
    FROM reservation 
    WHERE room.id = room_id
    AND 
      :startdate < enddate 
    AND 
      startdate < :enddate)

逻辑说返回在给定日期之间不存在任何相关保留的所有房间