繁体   English   中英

SQL-如何在WHERE条件下包含结果为零的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM