2016-02-06 54 views
2

我有了下面的表格如何统计每位教师授课的学生人数?

Courses: CourseID*, CourseName, TeacherID 
Teachers: TeacherID*, TeacherName 
Students: StudentID*, StudentName 
StudentCourses: CourseID*, StudentID* 

传说数据库: *是主键。

如何编写查询产生每个老师教的学生数?

例如

TeacherName, Count 
Bob 15 
Sarah 5 
Zubair 1 

编辑

select "TeacherName", count(*) 
from courses inner join teachers on courses."TeacherID" = teachers."TeacherI" 
join sutdentcourses on sutdentcourses."CourseID" = courses."CourseID" 
group by "TeacherName" 
order by "TeacherName"; 
+0

这是一个带有“join”的非常基本的聚合查询。你至少应该尝试一下。 –

+0

@idclark你需要老师和学生。与他们有关的唯一事情就是课程。所以你需要加入这些数据。现在,您需要每位教师的学生人数,以便您查看聚合函数。有了这些知识就可以得到一个SQL,然后我们可以进一步指导你,如果你仍然不明白。 http://www.w3schools.com/sql/并查看JOIN和GROUP BY。 –

+0

@GordonLinoff有没有比我的解决方案更有效的方法? – idclark

回答

2

制作所需的表教师,课程和StudentCourses,集团之间的记录由TeacherName并加入算上StudentID。

SELECT TeacherName, COUNT(StudentID) 
FROM Teachers JOIN Courses USING(TeacherID) 
JOIN StudentCourses USING(CourseID) 
GROUP BY TeacherName