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的主要内容,如果未能解决你的问题,请参考以下文章

GROUP BY,WHERE,HAVING之间的区别和用法

SQL中where和group by可以连用吗?having算是对检索条件的补充吗?

数据库中,select where group by having 执行顺序

不能在 Group by/Order by/Where/ON 子句中使用 Group 或 Aggregate 函数(min()、max()、sum()、count()、...等)

ThinkPHP group和count 无法同时使用解决办法

group by 的使用方法