在一个查询中计算多个列

时间:2015-03-12 18:52:52

标签: mysql

说我有以下表格,

id    description
-----------------
1     science
2     english
3     maths

lesson_student_rel

lesson_id   student_id
----------------------
1           1
1           2
1           3
2           1
3           1
3           3

lesson_tutor_rel

lesson_id   tutor_id
--------------------
1           1
2           1
2           2

lesson_assistant_rel

lesson_id   assistant_id
------------------------
1           1
1           2
3           2

我想计算每节课的学生,辅导员和助理的总人数,这样我得到的结果就像,

lesson_id   student_count   tutor_count   assistant_count
---------------------------------------------------------
1           3               1             2
2           1               2             0
3           2               0             1

我想我现在已经看了太长时间并且已经完全陷入困境,我发现了一些类似的问题,但似乎没有什么可以解决这个问题。是否可以使用一个查询?任何指针都会很好 - 答案会很棒。

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为这适合你:

SELECT l.id,COUNT(DISTINCT lsr.student_id) student_count,COUNT(DISTINCT ltr.tutor_id) tutor_count
,COUNT(DISTINCT lar.assistant_id) assistant_count
FROM lesson l
LEFT JOIN lesson_student_rel lsr ON lsr.lesson_id=l.id
LEFT JOIN lesson_tutor_rel ltr ON ltr.lesson_id=l.id
LEFT JOIN lesson_assistant_rel lar ON lar.lesson_id=l.id
GROUP BY l.id