同一个表上有多个连接

时间:2013-09-10 23:14:04

标签: sql sql-server

我有以下表格:

表:教师:

  

teacherID
  teacherName

表:学生:

  

studentID
  studentName
  teacherID
  advisorID

所以,通常情况下,我知道每个学生可以获得一行,他们的老师名称使用INNER JOIN。

但在这种情况下 - 顾问和教师 - 来自同一个教师表。那么如何才能两次加入教师表 - 一旦获得教师姓名,然后再获得顾问名称?

希望这很清楚

谢谢!

3 个答案:

答案 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