php - 需要查看日期范围是否与sql中的另一个日期范围重叠

标签 php mysql sql-optimization

我有一个存储房间预订的表,架构是:

ID | ROOM_ID | CHECK_IN_DATE | CHECK_OUT_DATE | USER_ID

我需要对在一组日期范围内可用/不可用的房间运行搜索查询。

另请记住,还有另一个表格,其中包含预订房间的日期及其格式:

ROOM_ID | DATE

所以我需要运行一个查询来查找设定范围内的可用房间,我将如何制定查询? 我在这里使用 MySQL。

---编辑---

还有一个模式的 Rooms 表:

ID | ROOM DETAILS etc

unavailability/prebooked dates table 基本上保存零星的单例日期,unavailability table 中的每个日期都是指由于某些原因无法预订房间的日期,例如:维修等

最佳答案

SELECT
   ROOM_ID
FROM
   Rooms r
   LEFT JOIN Bookings b ON (
      r.ROOM_ID = b.ROOM_ID
      AND b.CHECK_IN_DATE > '$MAX_DATE'
      AND b.CHECK_OUT_DATE < '$MIN_DATE'
   )

由于没有日期范围,我不确定预订房间的因素如何。预订的房间是否也会进入预订?

关于php - 需要查看日期范围是否与sql中的另一个日期范围重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5092028/

相关文章:

mysql - 无法启动 MariaDB

mysql - 在 MySQL 中哪个更安全,一个字段还是多个字段?

sql - 如何优化oracle中的海量更新

sql-server - 为什么 SQL Server 执行计划取决于比较顺序

php - 安全地限制 PHP session 空间

php - 如何在 Laravel 5.7 中创建和销毁 cookie?

php - Paypal 无法在沙盒帐户中使用

PHP:回调函数

mysql - 如何使用逗号分隔值的交集进行选择?

mysql - 我可以使用 EXISTS 而不是 JOIN 来加速这个查询吗?