我有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
正如你所看到的,课程数学只有一位老师(约翰),但课程英语有两位老师(约翰和史蒂夫)。
我想从课程表中选择所有课程,并结合每门课程的教师人数。我怎么能这样做?
提前致谢!
答案 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
答案 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