使用3个表创建结果表

时间:2018-04-09 13:29:10

标签: php mysql

我想要查询的mysql数据库中有3个表:

courses (id, course_name)
college_courses (id, college_id, course_id, num_of_courses)
student_courses (id, course_id, college_id)

我正在尝试将一系列课程ID传递给查询和大学ID。我想创建一个结果集来显示每门课程的名称(根据我通过的ID),学院(例如id = 8)可以访问的课程数量以及每门课程分配给学生的数量。我尝试使用连接和子查询构建查询。这就是我现在所拥有的,但分配给大学和学生的课程数量都是错误的:

SELECT
   courses.course_name,
   COALESCE(SUM( 
   CASE
      WHEN
         college_courses.college_id = 8 
      THEN
         college_courses.num_of_courses 
      ELSE
         0 
   END
), 0) AS total, COUNT(
   CASE
      WHEN
         student_courses.college_id = 8 
      THEN
         student_courses.id 
      ELSE
         0 
   END
) AS usedCourses 
FROM
   courses 
   LEFT JOIN
      college_courses 
      ON college_courses.course_id = courses.id 
   LEFT JOIN
      student_courses 
      ON student_courses.course_id = courses.id 
WHERE
   courses.id IN 
   (
      1, 2, 3, 4, 5, 6, 7, 8, 9, 10
   )
GROUP BY
   courses.courseid

0 个答案:

没有答案