2012-09-19 4 views
2

Так я учусь MySQL, и я пытаюсь сделать следующее:подсчета SQL/помощь запроса

Для каждого списка инструктора его/ее имени и числа студентов он/она наставников.

Соответствующая часть схемы является:

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

Оба InstructorID и StudentID карта для Person.ID и MentorID карты для InstructorID (Каждый студент имеет инструктор наставника, и оба преподаватели и студенты Persons).

Я попытался следующим без толка:

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:

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; 

Есть предложения?

ответ

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

Смежные вопросы