Wires77
Wires77

Reputation: 351

SQL count / query assistance

So I'm learning MySQL and I'm trying to do the following:

For each instructor list his / her name and the number of students he / she mentors.

The relevant part of the schema is:

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

Both InstructorID and StudentID map to Person.ID, and MentorID maps to InstructorID (Each student has an instructor mentor, and both instructors and students are Persons).

I've tried the following to no avail:

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;

Also this after reading some things on 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;

Any suggestions?

Upvotes: 2

Views: 311

Answers (1)

John Woo
John Woo

Reputation: 263703

You lack GROUP BY on your query,

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

Upvotes: 3

Related Questions