我有 2 张 table :
- 类(class):公开类(class)列表
- student_courses:已报名类(class)的学生
它们的描述如下:
courses:
id
name
approved_by
student_courses:
id
student_id
course_id
paid
我想列出所有类(class),每门类(class)包含以下信息:类(class) ID 和报名该类(class)的学生人数。我尝试过这样的事情:
SELECT courses.id, SUM(student_courses.id)
FROM courses as courses
LEFT JOIN student_courses as student_courses on student_courses.course_id=courses.id
WHERE courses.approved_by != '0'
但这只返回 1 行。
最佳答案
SELECT courses.id
, courses.name
, COUNT(student_courses.id) AS number_of_students ---COUNT(), not SUM()
FROM courses
LEFT JOIN student_courses
ON student_courses.course_id = courses.id
WHERE courses.approved_by <> '0'
GROUP BY courses.id
HAVING COUNT(student_courses.id) < courses.student_slots
关于Mysql JOIN/SUM 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8706456/