我有一个查询,用于选择在所有可用日期预订特定酒店的人数。
基本上,我有两个表:
dates_event ,其中列出了我有3个日期的所有可用日期
已注册的酒店 ,其中列出了所有具有相应酒店,日期和用户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条件(似乎让所有空行都消失了)时,什么都不显示。
关于如何实现此目标的任何想法吗?
答案 0 :(得分:4)
将您的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