我有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/

10-10 05:54