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