我有以下表格:多個連接到同一臺
表:老師:
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