Mysql JOIN/SUM 查询

标签 mysql

我有 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/

相关文章:

php - 从单个查询中解析多个 $variable 值?

php - Laravel - 按出现次数获得前 5 名

MySQL:来自字符串拆分的动态 "IN"子句

mysql - 大型 INNODB 表锁定

php - Laravel Eloquent 乘列总和

php - 将 CSV 文件转换为 Mysql 数据库 PHP

php - PHP-在MySQL函数中使用HTML表单函数中的变量在另一个函数中查询

c# - MySQL 中的事务 - 无法回滚

Mysql - 将两行与值对合并

php - 使用SPACE php mysql从下拉列表到单列插入的多个值