我有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位老师(约翰和史蒂夫)。
我想从表格课程中选择所有课程,再加上每门课程的教师人数。我怎样才能做到这一点?
提前致谢!
最佳答案
像这样吗
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;
我也将更改您的user_course的逻辑,而是使用复合主键。
CREATE TABLE User_Course (
user_id INT NOT NULL,
course_id INT NOT NULL,
PRIMARY KEY(user_id, course_id),
CONSTRAINT user_course_user FOREIGN KEY (user_id) REFERENCES Users(user_id),
CONSTRAINT user_course_course FOREIGN KEY (course_id) REFERENCES Course(course_id)
);
此处:SQLFiddel
关于mysql - 选择所有类(class)+老师人数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40739428/