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子句。

w

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

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

逻辑是返回给定日期之间没有任何相关预订的所有房间

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章