我有以下表格:
表:教师:
teacherID
teacherName
表:学生:
studentID
studentName
teacherID
advisorID
所以,通常情况下,我知道每个学生可以获得一行,他们的老师名称使用INNER JOIN。
但在这种情况下 - 顾问和教师 - 来自同一个教师表。那么如何才能两次加入教师表 - 一旦获得教师姓名,然后再获得顾问名称?
希望这很清楚
谢谢!
答案 0 :(得分:4)
根据学生的阿尔法顺序列出学生的老师和顾问姓名,如果没有(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
答案 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
答案 2 :(得分:1)
为什么不尝试以下内容。自从我完成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