2012-06-01 50 views
1

我一直在查询几个小时挣扎,但只是不能正确的。两张桌子,一张给学生,另一张包含每个学生注册的所有课程。我需要一个每个学生都有一行的结果集,以及学生已注册的课程数。这是我迄今为止最接近的尝试:MySQL与加入和组计数

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

我使用的是左连接,因为结果必须包括尚未注册任何班级的学生。表格正在加入学生ID,这也是我将它们分组的方式。

目前的翻译似乎正在工作(大部分),除非它没有返回没有任何班级的学生在他们的日程安排。

我在这里很困难,并且寻找任何能够让我快速推开泥巴的人。感谢您提供的任何牵引力!

回答

2

你是非常接近:-)

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

应该正常工作

+0

我通过收到一个语法错误与组学生*,但该查询似乎按照预期的方式按照student.id的分组工作。感谢您的快速和优秀的例子! – Jimmyb

+0

是的,那么,而不是学生。*只显示和分组列1每个 – Sebas

+0

谢谢!晚上好。 – Sebas

0

从我的理解怎么样一个子查询:

SELECT 
    *, (select count(sch.id) from schedule as sch where sch.studentid = stu.id) as ClassNum 
FROM student as stu 
0
SELECT *, (SELECT COUNT(*) `count` FROM schedule s where s.studentid=student.id) `count` FROM student