2

だから私はMySQLを学んでいて、次のことをしようとしています:

各インストラクターについて、彼/彼女の名前と彼/彼女が指導している学生の数をリストしてください。

スキーマの関連部分は次のとおりです。

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

との両方InstructorIDが にStudentIDマップされPerson.ID、 とが にMentorIDマップされます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 に関するいくつかのことを読んだ後:

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

1 に答える 1

3

あなたはあなたの質問に欠け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
于 2012-09-19T03:55:34.693 に答える