【发布时间】:2018-04-17 23:48:32
【问题描述】:
我创建了一个日历表,其中仅包含大量日期。然后我的事件表有排列的日期,如果一天没有事件,我想为此返回零。我有以下内容:
SELECT cDate, Branch, IFNULL(COUNT(*),0) as count
FROM Events E LEFT JOIN Calendar C ON C.cDate = DATE(E.eventDate)
WHERE cDate BETWEEN '2018-04-14' AND '2018-04-18'
GROUP BY Branch, cDate
ORDER BY cDate
但目前正在显示结果:
cDate | Branch | count
2018-04-14 | 1 | 5
2018-04-14 | 2 | 4
2018-04-16 | 1 | 1
2018-04-16 | 2 | 3
2018-04-17 | 1 | 5
2018-04-18 | 1 | 4
但我打算让它显示任何计数为零的日期,如下所示:
cDate | Branch | count
2018-04-14 | 1 | 5
2018-04-14 | 2 | 4
2018-04-15 | 1 | 0
2018-04-15 | 2 | 0
2018-04-16 | 1 | 1
2018-04-16 | 2 | 3
2018-04-17 | 1 | 5
2018-04-17 | 2 | 0
2018-04-18 | 1 | 4
2018-04-18 | 2 | 0
【问题讨论】:
-
答案指出您的问题缺少重要(但基本)信息。他们不应该用猜测来回答,他们应该评论让你提供信息。请阅读minimal reproducible example和meta.stackoverflow.com/q/333952/3404097并采取行动。
-
嗨。始终在 Google 上搜索您的问题/问题/目标/desiderata 的许多清晰、简洁、特定的版本/变体/措辞,带和不带您的特定字符串/名称/代码,并从许多问题中阅读许多答案,这应该会通知您进一步的 Google 搜索。如果在应用所学知识并重复此操作后找不到答案,请提出问题。使用最常见的高效关键字作为标签。使用最佳搜索作为标题。例如,“不返回空结果”只是您意思的一部分;然而谷歌搜索你的标题仍然会立即给出相关的答案。
标签: mysql outer-join