1

我一直在为一个查询苦苦挣扎几个小时,但就是无法正确处理。两张表,一张用于学生,另一张包含每个学生注册的所有课程。我需要一个结果集,每个学生有一行,加上学生注册的课程数。这是我迄今为止最接近的尝试:

SELECT 
count(*), student.*
FROM student 
LEFT JOIN schedule
ON student.id = schedule.studentid
GROUP BY schedule.studentid 

我使用 LEFT JOIN 是因为结果必须包括尚未注册任何课程的学生。这些表由学生 ID 连接,这也是我对它们进行分组的方式。

当前的演绎似乎(大部分)有效,但它不会在没有任何课程的情况下返回学生。

我被困在这里,正在寻找任何可以让我快速摆脱困境的人。感谢您提供的任何牵引力!

4

3 回答 3

2

你真的很亲密:-)

SELECT 
    student.*, count(*)
FROM student 
    LEFT JOIN schedule ON student.id = schedule.studentid
GROUP BY student.* 

应该可以正常工作

于 2012-06-01T22:01:21.700 回答
0

据我了解,子查询如何:

SELECT 
     *, (select count(sch.id) from schedule as sch where sch.studentid = stu.id) as ClassNum
FROM student as stu
于 2012-06-01T21:54:38.457 回答
0
SELECT *, (SELECT COUNT(*) `count` FROM schedule s where s.studentid=student.id) `count` FROM student
于 2012-06-01T21:55:38.020 回答