SQL - Как включить строку с нулевым результатом с условием WHERE - PullRequest
1 голос
/ 17 апреля 2019

У меня есть запрос для выбора количества людей, которые забронировали конкретный отель на все доступные даты.

По сути, у меня есть две таблицы:

  • date_event , в котором перечислены все доступные даты, в которые у меня есть 3 даты

  • register_hotels , в котором перечислены регистрации всех людей с указанием соответствующего отеля, даты и идентификатора пользователя

Хитрость в том, что я хочу отобразить '0', если никто не забронировал отель на определенный день.

Вот мой запрос:

SELECT dates_event.date_full, count(registered_hotels.id_registered)
FROM dates_event 
    LEFT JOIN registered_hotels ON dates_event.date_id = registered_hotels.date_id
    WHERE registered_hotels.idhotel='1'
    GROUP by dates_event.date_full

Показывает это:

+-------------+----------------------------------------+
|  date_full  | count(registered_hotels.id_registered) |
+-------------+----------------------------------------+
| 2019-09-15  |                                      1 |
| 2019-09-16  |                                      1 |
+-------------+----------------------------------------+

Пока я хочу отобразить это:

+-------------+----------------------------------------+
|  date_full  | count(registered_hotels.id_registered) |
+-------------+----------------------------------------+
| 2019-09-15  |                                      1 |
| 2019-09-16  |                                      1 |
| 2019-09-17  |                                      0 |
+-------------+----------------------------------------+

Я нашел ответы, чтобы на самом деле отображать ноль, но ничего, когда у меня есть конкретное условие WHERE, которое, кажется, выпускает все пустые строки.

Есть идеи, как мне этого добиться?

1 Ответ

4 голосов
/ 17 апреля 2019

поместите registered_hotels.idhotel='1' в состояние вместо того, где

SELECT dates_event.date_full, count(registered_hotels.id_registered)
FROM dates_event 
    LEFT JOIN registered_hotels ON dates_event.date_id = registered_hotels.date_id
    and registered_hotels.idhotel='1'
    GROUP by dates_event.date_full
...