选择所有课程+教师人数

时间:2016-11-22 10:29:14

标签: mysql

我有3张桌子

table: courses

course_id | slug
-------------------
1         | math
2         | science
3         | english

table: users

user_id | username
------------------
1       | john
2       | steve

table user_courses

user_course_id | user_id | course_id
------------------------------------
1              | 1       | 1
2              | 1       | 3
3              | 2       | 3

正如你所看到的,课程数学只有一位老师(约翰),但课程英语有两位老师(约翰和史蒂夫)。

我想从课程表中选择所有课程,并结合每门课程的教师人数。我怎么能这样做?

提前致谢!

2 个答案:

答案 0 :(得分:0)

实际上,您应该发布您想要的结果,否则我们无法提供您真正想要的结果。就像@duffymo所说,你需要两个JOIN,这是一个解决方案(或尝试):

select
   c.*,
   coalesce(count(u.user_id), 0) as teacher_cnt
from courses c
left join user_courses uc
on c.course_id = uc.course_id
left join users u
on u.user_id = uc.user_id
group by c.course_id

SqlFiddle Demo Here

答案 1 :(得分:0)

这样的东西?

9007199254740992

我也会改变你的user_course的逻辑,而是使用composit主键。

SELECT Course.slug, Count(Users.user_id) as UserCount FROM Course 
    INNER JOIN User_Course ON User_Course.course_id = Course.course_id 
    INNER JOIN Users ON Users.user_id = User_Course.course_id
    GROUP BY Course.course_id;   

此处:SQLFiddel