我有一个查询,用于选择在所有可用日期预订特定酒店的人数。
基本上,我有两个表:
-
dates_event 列出了我有 3 个日期的所有可用日期
-
registered_hotels 列出了所有具有相应酒店,日期和用户ID的人的注册
诀窍是,如果没有人在特定日期预订酒店,我想显示"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 条件似乎会释放所有空行时,什么都没有。
关于我如何实现这一目标的任何想法?
将您的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