我正在建立一个课程系统,其中包括课程,教师和表格,以便将两者联系起来。
简化表instructors
:
id | name | ...
简化表courses
:
id | name | instructors_needed | ...
简化表link
:
id | course_id | instructor_id
我创建了以下查询来获取与特定课程相关联的教师的姓名:
SELECT i.name, c.name, c.instructors_needed FROM courses c
LEFT OUTER JOIN
link
ON c.id = link.course_id
LEFT OUTER JOIN
instructors i
ON link.instructor_id = i.id
这很好用。我创建了以下查询以查找每个课程的教师数量:
SELECT COUNT(i.name) as number, c.id, c.name, c.instructors_needed FROM courses c
LEFT OUTER JOIN
link
ON c.id = link.course_id
LEFT OUTER JOIN
instructors i
ON link.instructor_id = i.id
GROUP BY c.ID
我想结合两个查询,获取有关特定案例的教师的所有详细信息,以及课程中教师的总数和所需教师的数量。我怎么做?我知道GROUP BY就是问题所在。 我搜索过但我只能找到2个表而不是3个表的例子,而且我不知道怎么弄不到三个表。
非常感谢您的帮助,谢谢!
答案 0 :(得分:3)
尝试:
SELECT i.name, c.name, c.instructors_needed, Ctr.CourseCount FROM courses c
LEFT OUTER JOIN
link
ON c.id = link.course_id
LEFT OUTER JOIN
instructors i
ON link.instructor_id = i.id
LEFT OUTER JOIN
(SELECT link.course_id, COUNT(*) as CourseCount FROM link GROUP BY link.course_id) Ctr
ON link.course_id = Ctr.course_id