我需要在系统上的每个项目中获取属于用户的任务数。表格是:
项目: 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返回任务数,但仅适用于分配给用户的任务的项目。我希望查询返回系统中的所有项目,即使没有分配任务。
我该怎么做?
谢谢!
答案 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;