mysqli COUNT与WHERE和GROUP BY

时间:2018-02-25 23:30:36

标签: mysql group-by count

我正在尝试获取特定日期的记录数量。问题是,当日期没有记录时,它不会显示日期。

$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

1 个答案:

答案 0 :(得分:0)

你应该清楚知道如何在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);