我在使用3表查询时遇到了很大困难。
情况是TEAM
有很多或没有MEMBERS
,MEMBER
可能有很多或没有TASKS
。我想得到的是每TASKS
个TEAM
的数量。 TEAM
拥有自己的ID
,MEMBER
将此作为TEAM_ID
上的FK,TASK
MEMBER_ID
上有TASK
。
我想获得TEAM.NAME,COUNT(人/团队),计数(任务/团队)的报告
我让自己很困惑,我的想法是在TEAM和会员身上使用外部加入所以我拥有所有团队,他们拥有任何成员。从这里开始,我感到很困惑。如果有人能够指出我正确的方向,那么我就有一些工作要做,我会非常努力
答案 0 :(得分:1)
我认为你可以用聚合做你想做的事 - 和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;
答案 1 :(得分:1)
试试这个:
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
答案 2 :(得分:1)
您想使用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;