我有以下表格:多个连接到同一台
表:老师:
teacherID
teacherName
表:学生:
studentID
studentName
teacherID
advisorID
所以,通常情况下,我知道我能得到每名学生单列,与老师使用INNER JOIN名。
但在这种情况下 - 顾问和tacher - 来自同一个老师表。那么我怎么能两次加入老师的名单 - 一旦获得了老师的名字,然后再次获得老师的名字?
希望这个很清楚
谢谢!
我有以下表格:多个连接到同一台
表:老师:
teacherID
teacherName
表:学生:
studentID
studentName
teacherID
advisorID
所以,通常情况下,我知道我能得到每名学生单列,与老师使用INNER JOIN名。
但在这种情况下 - 顾问和tacher - 来自同一个老师表。那么我怎么能两次加入老师的名单 - 一旦获得了老师的名字,然后再次获得老师的名字?
希望这个很清楚
谢谢!
此列出了学生与老师和顾问如有的名字,在学生的字母顺序,没有任何(一)教师或(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
为什么不尝试如下所示。自从我完成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
你可以加入到同一个表不止一次,只是给它一个不同的别名为每个连接和名称的描述不够方式的领域。如果可能没有链接,请使用左连接,但如果学生总是有老师和顾问,则直连应该没问题。
事情是这样的:
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
惊人的 - 感谢约翰,和其他人太多 – kneidels