mysqli COUNT与WHERE和GROUP BY
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysqli COUNT与WHERE和GROUP BY相关的知识,希望对你有一定的参考价值。
我试图获取特定日期的记录数量。问题是,当日期没有记录时,它不会显示日期。
$asksome= mysqli_query("
SELECT COUNT(worker_id) AS amount, problem.datter AS datum
FROM problem
WHERE worker_id = $idmed
GROUP BY datter"
);
结构如下所示:
worker_id | datter | note
1 |2018-02-25 |
1 |2018-02-26 |
3 |2018-02-25 |
这是我正在使用的查询。我希望查询显示日期,即使COUNT为0.我的意思是,我希望结果是这样的:
count result | date
0 | 2018-02-24
2 | 2018-02-25
1 | 2018-02-26
0 | 2018-02-27
- - 对于发现这篇文章的人不知道该怎么做:我通过制作另一个只包含我想要检查的特定日期的表来解决我的问题。我使用了以下查询:
SELECT weeks.week_id AS datum, COUNT(problem.datter) AS amount
FROM weeks
LEFT JOIN problem ON problem.datter = weeks.week_id
GROUP BY weeks.week_id
答案
你应该清楚知道如何在0时处理计数的sql。通常,当使用SQL的SUM()
和COUNT()
以及GROUP BY
语句时,永远不会输出0。这是因为,当没有0的记录时,GROUP BY
子句没有任何组合。
为此,您可以使用COALESCE表达式。
你可以在这里看到它的文档:https://docs.microsoft.com/en-us/sql/t-sql/language-elements/coalesce-transact-sql
所以在你的例子中,sql查询应该是:
SELECT COALESCE (SELECT COUNT(worker_id) AS amount, problem.datter AS datum
FROM problem
WHERE worker_id = $idmed
GROUP BY datter"), 0);
以上是关于mysqli COUNT与WHERE和GROUP BY的主要内容,如果未能解决你的问题,请参考以下文章
SQL中where和group by可以连用吗?having算是对检索条件的补充吗?
数据库中,select where group by having 执行顺序
不能在 Group by/Order by/Where/ON 子句中使用 Group 或 Aggregate 函数(min()、max()、sum()、count()、...等)