Question

J'ai une base de données MySQL avec ces deux tableaux:

Tutor(tutorId, initials, lastName, email, phone, office)
Student(studentId, initials, lastName, email, tutorId)

Quelle est la requête pour renvoyer les initiales et le nom de tous les étudiants qui partagent le même tuteur?

J'ai essayé SELECT intials, lastName FROM Student WHERE tutorId = tutorId mais retourne juste les noms de tous les élèves.

Était-ce utile?

La solution

Vous devez joindre les étudiants contre lui-même:

SELECT s1.initials, s1.lastName
FROM Student s1, Student s2
WHERE s1.studentId <> s2.studentID /* Every student has the same tutor as himself */
AND s1.tutorId = s2.tutorid

Si vous voulez afficher les paires:

SELECT s1.initials, s1.lastName, s2.initials, s2.lastName
FROM Student s1, Student s2
WHERE s1.studentId <> s2.studentID /* Every student has the same tutor as himself */
AND s1.tutorId = s2.tutorid

Pour obtenir une liste des Tutor - étudiants:

SELECT tutorId, GROUP_CONCAT( initials, lastName SEPARATOR ', ') 
FROM `Student` 
GROUP BY tutorId
/* to only show tutors that have more than 1 student: */
/* HAVING COUNT(studentid) > 1 */

Autres conseils

SELECT Tutor.tutorId, Student.initials, Student.lastName FROM Student INNER JOIN Tutor ON Tutor.tutorId = Student.tutorId GROUP BY tutorId

sera de retour (non testé, mais il se doit) une liste des initiales des étudiants et des noms de famille regroupés par tutorId. Est-ce que vous voulez?

Rejoindre la table des élèves à se

SELECT S1.intials, S1.lastName
FROM Student S1, Student S2 
WHERE S1.tutorId = S2.tutorId 
AND S1.studentId <> S2.studentId

est la requête dans SQL Server, je suis sûr que l'idée est très proche de MySql:

 select s1.initials,s1.lastname,s2.initials,s2.lastname from students s1 inner join students s2 on s1.tutorid= s2.tutorid and s1.studentid <> s2.studentid

Vous devrez faire une requête pour chaque tutorId. Pseudo-Code:

for id in tutorIds
    query('SELECT intials, lastName FROM Student WHERE tutorId = '+id )

Si vous voulez avoir une liste contenant tous les Tuteurs qui ont fait les étudiants, faire

SELECT tutorId FROM Student GROUP BY tutorId
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top