我有以下表格:
表:教师:
教师ID 教师
姓名
表:学生:
学生ID 学生姓名 教师
ID
顾问
ID
所以,通常,我知道我可以为每个学生获得一行,他们的老师姓名使用 INNER JOIN。
但在这种情况下 - 顾问和教师 - 来自同一个教师表。那么我如何才能两次加入教师表 - 一次获得教师姓名,然后再次获得顾问姓名?
希望这很清楚
谢谢!
我有以下表格:
表:教师:
教师ID 教师
姓名
表:学生:
学生ID 学生姓名 教师
ID
顾问
ID
所以,通常,我知道我可以为每个学生获得一行,他们的老师姓名使用 INNER JOIN。
但在这种情况下 - 顾问和教师 - 来自同一个教师表。那么我如何才能两次加入教师表 - 一次获得教师姓名,然后再次获得顾问姓名?
希望这很清楚
谢谢!
这会以学生的字母顺序列出学生及其教师和顾问的姓名(如果有的话),无需 (a) 教师或 (b) 顾问必须存在。如果您只想要这些名称存在的地方,请将相应的联接更改为 INNER 联接。
SELECT s.studentname as [Student], t.teachername as [Teacher], a.teachername as [Advisor]
FROM Students s
LEFT JOIN Teachers t ON s.TeacherID = t.TeacherID
LEFT JOIN Teachers a ON s.AdvisorID = a.TeacherID
ORDER BY 1, 2
您可以多次加入同一个表,只需为每个连接指定一个不同的别名,并以足够描述性的方式命名您的字段。如果可能没有链接,请使用左连接,但如果学生总是同时有老师和顾问,那么直接连接应该没问题。
像这样的东西:
select s.studentname student
, t.teachername teacher
, a.teachername advisor
from students s
join teacher t
on t.teacherID = s.teacherID
join teacher a
on a.teacherID = s.teacherID
为什么不尝试以下方法。自从我完成 SQL 以来已经有一段时间了,所以这可能行不通。
SELECT s.studentName AS Student, t.teacherName AS Teacher, a.teacherName AS Advisor
FROM teachers t, teachers a, students s
WHERE t.teacherID = s.teacherID AND a.teacherID = s.advisorID