Mysql的加入/ SUM查询
问题描述:
我有2个表:Mysql的加入/ SUM查询
- 课程:谁已经签署了为一疗程
泰伊介绍如下学生:开放课程
courses:
id
name
approved_by
student_courses:
id
student_id
course_id
paid
我想为每门课程列出所有课程,内容如下:课程编号和螺柱数量新生报名参加该课程。我试过这样的东西:
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
+0
谢谢!最后一个问题:我如何在我的WHERE中使用number_of_students(例如,我只想抓取未满的课程)。我试图改变我的地方是: WHERE courses.approved_by 0 AND number_of_students
+1
见我的编辑。这些条件(涉及在GROUP BY期间计算的值应该放在HAVING条款中) – 2012-01-03 00:16:34
您没有“GROUP BY”子句,聚合“SUM()”需要。 – 2012-01-02 23:42:03
在您的查询中,您正在使用未在模式描述中定义的表'学生'。您还将学生表加入'instructor_id'字段,这两个字段都没有定义,并且没有意义加入到学生中。你能澄清一下吗?因为这里似乎还有其他变数可能会让任何人试图帮助你。 – John 2012-01-02 23:47:16
学生的名字和姓氏只是一个加入,但为了简单起见,我删除了他们! – execv 2012-01-02 23:49:14