我在查询上一直在苦苦挣扎几个小时,但却无法做到正确。两个表,一个用于学生,另一个包含每个学生已注册的所有课程。我需要一个结果集,每个学生有一行,加上学生注册的课程数。这是我迄今为止最接近的尝试:
SELECT
count(*), student.*
FROM student
LEFT JOIN schedule
ON student.id = schedule.studentid
GROUP BY schedule.studentid
我正在使用LEFT JOIN,因为结果必须包括尚未注册任何课程的学生。这些表由学生ID加入,这也是我对它们进行分组的方式。
目前的演绎似乎是有效的(大多数情况下),除非它没有在课程中没有任何课程的学生返回。
我被困在这里,寻找能让我快速摆脱困境的人。感谢您提供的任何牵引力!
答案 0 :(得分:2)
你真的很亲密:-)
SELECT
student.*, count(*)
FROM student
LEFT JOIN schedule ON student.id = schedule.studentid
GROUP BY student.*
应该可以正常工作
答案 1 :(得分:0)
根据我的理解,子查询如何:
SELECT
*, (select count(sch.id) from schedule as sch where sch.studentid = stu.id) as ClassNum
FROM student as stu
答案 2 :(得分:0)
SELECT *, (SELECT COUNT(*) `count` FROM schedule s where s.studentid=student.id) `count` FROM student