как я запрашиваю mysql заданный диапазон дат и соединил две таблицы? - PullRequest
0 голосов
/ 11 октября 2018

Предположим, у меня есть два стола, одна комната и аренда.Как я могу получить результат присоединения к MySQL, как в таблице ниже.

enter image description here

отображать доступность для каждого номера room_id из первого столбца и забронированного статуса во второйтаблица для каждой даты, заданного диапазона дат.

1 Ответ

0 голосов
/ 11 октября 2018

Во-первых, убедитесь, что 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 будет немного сложнее.

...