我试图用完成/完成任务的计数列出所有任务(在提交中)。问题是我还想显示没有用户完成的所有任务。此查询未列出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;
答案 0 :(得分:1)
您需要使用OUTER JOIN
来获得所需的结果。但是,考虑到之前的答案还不够,我猜你不想GROUP BY
taskPK
字段,而是date
和title
字段。
也许这就是你要找的东西:
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;