[英]SQL - How to includes row with zero results with a WHERE condition
我有一个查询,用于选择在所有可用日期预订特定酒店的人数。
基本上,我有两个表:
date_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条件(似乎让所有空行都消失了)时,我发现了实际上显示为零但什么都不显示的答案。
关于如何实现此目标的任何想法吗?
将您的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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.