SQL:计算每个项目中属于用户的所有任务

时间:2013-04-10 12:04:18

标签: sql

我需要在系统上的每个项目中获取属于用户的任务数。表格是:

项目: ID,名称

任务: ID,ProjectID,受让人(用户)

现在我正在进行此查询:

SELECT Projects.ID, Projects.Name, COUNT(*) 
FROM Tasks JOIN Projects ON Tasks.ProjectID = Projects.ID 
WHERE Assignee=1 GROUP BY Projects.ID;

仅部分有效。 IT返回任务数,但仅适用于分配给用户的任务的项目。我希望查询返回系统中的所有项目,即使没有分配任务。

我该怎么做?

谢谢!

3 个答案:

答案 0 :(得分:3)

改为使用LEFT JOIN

LEFT JOIN的运作方式与INNER JOIN不同。它的作用是返回左侧表中的所有记录Projects,无论它在右侧表中是否匹配,都是Tasks SELECT Projects.ID, Projects.Name, COUNT(Tasks.ProjectID) FROM Projects LEFT JOIN Tasks ON Tasks.ProjectID = Projects.ID AND Assignee=1 GROUP BY Projects.ID; 1}}。

{{1}}

要进一步了解联接,请访问以下链接:

答案 1 :(得分:0)

如果您需要所有项目RIGHT OUTER JOIN而不是JOIN

SELECT Projects.ID, Projects.Name, COUNT(Projects.ID) 
FROM Tasks RIGHT OUTER JOIN Projects 
ON Tasks.ProjectID = Projects.ID 
AND Assignee=1 GROUP BY Projects.ID;

答案 2 :(得分:0)

试试这个

SELECT Projects.ID, Projects.Name, COUNT(*) 
FROM Projects JOIN Tasks ON Tasks.ProjectID = Projects.ID 
WHERE Assignee=1 GROUP BY Projects.ID;