3表查询与计数

时间:2015-01-31 00:01:00

标签: mysql sql sqlplus

我在使用3表查询时遇到了很大困难。

情况是TEAM有很多或没有MEMBERSMEMBER可能有很多或没有TASKS。我想得到的是每TASKSTEAM的数量。 TEAM拥有自己的IDMEMBER将此作为TEAM_ID上的FK,TASK MEMBER_ID上有TASK

我想获得TEAM.NAME,COUNT(人/团队),计数(任务/团队)的报告

我让自己很困惑,我的想法是在TEAM和会员身上使用外部加入所以我拥有所有团队,他们拥有任何成员。从这里开始,我感到很困惑。如果有人能够指出我正确的方向,那么我就有一些工作要做,我会非常努力

3 个答案:

答案 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

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;