我如何查询mysql给定的日期范围并连接两个表?

velaa5lx  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(386)


假设我有两张table,一个房间,租的。如何得到下表所示的mysql连接结果。

在第一列中显示每个房间的可用性,在第二个表中显示每个日期范围内的预定状态。

u4dcyp6a

u4dcyp6a1#

首先,确保 from 以及 until 是mysql吗 DATE 类型,而不是存储为字符串。
如果这些列是mysql DATE 数据类型,然后我们可以这样做:

SELECT r.id AS room_id 
      , r.quantity - IFNULL(SUM(IF('2012-12-01' BETWEEN v.from AND v.until, v.quantity, 0)),0) AS `1`
      , r.quantity - IFNULL(SUM(IF('2012-12-02' BETWEEN v.from AND v.until, v.quantity, 0)),0) AS `2`
      , r.quantity - IFNULL(SUM(IF('2012-12-03' BETWEEN v.from AND v.until, v.quantity, 0)),0) AS `3`
      , ... 

   FROM room r
   LEFT
   JOIN room_reservation v
     ON v.room_id  = r.id
    AND v.until   >= '2012-12-01'
    AND v.from    <= '2012-12-31'
  GROUP BY r.id, r.quantity
  ORDER BY r.id

如果不是的话 DATE 数据类型,而不是规范中的字符串 YYYY-MM-DD 格式,然后我们可以使用mysql STR_TO_DATE 要转换为的函数 DATE . sql只会有点混乱。

相关问题