0

我有以下表格:

表:教师:

教师ID 教师
姓名

表:学生:

学生ID 学生姓名 教师
ID
顾问
ID

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

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

希望这很清楚

谢谢!

4

3 回答 3

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
于 2013-09-10T23:21:37.330 回答
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
于 2013-09-10T23:27:11.153 回答
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
于 2013-09-10T23:21:46.050 回答