使用MySQL计算存在和不存在的数量

时间:2014-05-28 23:42:30

标签: mysql count group-by

我试图用完成/完成任务的计数列出所有任务(在提交中)。问题是我还想显示没有用户完成的所有任务。此查询未列出count = 0(Null)。有没有办法做到这一点?

通缉结果:

Date       | title   | completed
2014-05-20 | Case  1 | 45
2014-05-24 | Case 10 | 11
2014-05-20 | Case  2 |  0

到目前为止我已尝试过:

Select date, title, count(*) as completed
from users u, submissions s, task t
where u.userPK = s.user
and s.task= t.taskPK
group by taskPK
order by completed desc; 

Tables

2 个答案:

答案 0 :(得分:1)

您需要使用OUTER JOIN来获得所需的结果。但是,考虑到之前的答案还不够,我猜你不想GROUP BY taskPK字段,而是datetitle字段。

也许这就是你要找的东西:

SELECT t.date, t.title, count(*) cnt
FROM task t
    LEFT JOIN submissions s ON t.task = s.taskPK
GROUP BY t.date, t.title
ORDER BY cnt DESC

我还删除了user表格,因为我不确定它会如何影响结果。如果您需要它,只需添加一个额外的连接。

答案 1 :(得分:0)

我认为您应该可以使用LEFT JOIN

来实现这一目标
SELECT date, title, COUNT(u.userPK) completed FROM task t 
LEFT JOIN submissions s ON s.task = t.taskPK 
LEFT JOIN users u ON s.user = u.userPK 
GROUP BY t.taskPK 
ORDER BY completed;