2013-09-10 48 views
0

我有以下表格:多個連接到同一臺

表:老師:

teacherID
teacherName

表:學生:

studentID
studentName
teacherID
advisorID

所以,通常情況下,我知道我能得到每名學生單列,與老師使用INNER JOIN名。

但在這種情況下 - 顧問和tacher - 來自同一個老師表。那麼我怎麼能兩次加入老師的名單 - 一旦獲得了老師的名字,然後再次獲得老師的名字?

希望這個很清楚

謝謝!

回答

4

此列出了學生與老師和顧問如有的名字,在學生的字母順序,沒有任何(一)教師或(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 
+0

驚人的 - 感謝約翰,和其他人太多 – kneidels

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