我有这两个表MySQL数据库:

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

什么是返回谁共享同一个导师的任何学生的缩写和姓氏查询?

我试过SELECT intials, lastName FROM Student WHERE tutorId = tutorId但只是返回所有学生的名字。

有帮助吗?

解决方案

您必须加入学生对自身:

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

如果你想输出的对:

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

要获得导师的名单 - 学生:

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 */

其他提示

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

这将返回(未测试,但它应该)学生的缩写和tutorId分组姓氏列表。这是你想要的吗?

加入学生台本身

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

这是SQL Server查询,我敢肯定,这个想法是非常接近的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

您将不得不作出查询为每一个tutorId。伪代码:

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

如果你想有一个包含究竟是谁拥有所有的学生导师名单,做一个

SELECT tutorId FROM Student GROUP BY tutorId
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top