2012-09-19 113 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