3 table 查询次数

3 table query with count

我在处理 3 table 查询时遇到了很大的困难。

情况是 TEAM 有很多或没有 MEMBERSMEMBER 可能有很多或没有 TASKS。我想得到的是每个 TEAMTASKS 的数量。 TEAM 有自己的 IDMEMBERTEAM_ID 上将其作为 FK,TASKTASK 上有 MEMBER_ID

我想获取 TEAM.NAME、COUNT(Person/Team)、Count(Tasks/Team)

的报告

我自己很困惑,我的想法是在 TEAM 和 MEMBER 上使用 Outer Join,这样我就拥有了所有团队及其拥有的任何成员。从这里我变得完全困惑。如果有人能给我指出正确的方向,这样我就有工作可做,我会非常感激

我认为您可以通过聚合来做您想做的事 -- count(distinct):

select t.name,
       count(distinct m.memberid) as nummembers,
       count(distinct tk.taskid) as numtasks
from team t left join
     member m
     on t.teamid = j.teamid left join
     tasks tk
     on tk.memberid = m.memberid
group by t.name;

试试这个:

SELECT Team.name, COUNT(Person.id_person), COUNT(Tasks.id_task)
FROM Team t,
LEFT JOIN Person p on p.team_id = t.id_team
LEFT JOIN Tasks ts on ts.person_id = p.id_person
GROUP BY p.team_id, ts.person_id

您想使用 count distinct:

MySQL COUNT DISTINCT

select t.name as Team,
    count(distinct m.ID) as Member_cnt,
    count(distinct t.ID) as Task_cnt
from team t
   left join member m
       on t.ID= m.TEAM_ID
   left join tasks t
     on t.MEMBER_ID= m.ID
group by t.name;