2012-09-19 84 views
2

所以我学习MySQL和我想做到以下几点:SQL计数/查询援助

对于每个教练名单他/她的名字和他/她辅导者的学生人数。

架构的相关部分是:

Person(ID, Name) 
Student(StudentID, MentorID) 
Instructor(InstructorID) 

两个InstructorIDStudentID地图Person.ID,并MentorID映射到InstructorID(每个学生都有导师的导师,和教员和学生人数)。

我已经尝试了以下无济于事:

select InstructorDetails.Name, count(Mentees) 
from Instructor i 
inner join Person as InstructorDetails 
    on InstructorDetails.ID = i.InstructorID 
inner join Student as Mentees 
    on Mentees.MentorID = i.InstructorID; 

任何建议:

select p.Name, count(select s.StudentID 
        from Student s 
        where s.MentorID = i.InstructorID) 
from Person p, Instructor i 
where p.ID = i.InstructorID; 

而且这个阅读StackOverflow的一些事情之后?

回答

4

你缺乏GROUP BY您的查询,

SELECT InstructorDetails.Name, count(*) totalCount 
FROM Instructor i 
     INNER JOIN Person as InstructorDetails 
      ON InstructorDetails.ID = i.InstructorID 
     INNER JOIN Student as Mentees 
      ON Mentees.MentorID = i.InstructorID 
GROUP BY InstructorDetails.Name 
+0

感谢约翰,这似乎像它应该工作!但是,我收到一个语法错误(com.mysql.jdbc.exceptions.MySQLSyntaxErrorException)。我正在为我的课程通过一个特殊的应用程序来运行它,但是你能想到任何可能出错的东西吗? – Wires77

+0

您在'COUNT'中使用了别名,它应该是COUNT(*)' –

+0

好的,谢谢!我还在学习,所以谢谢你的帮助:) – Wires77