2016-02-12 105 views
1

我知道這已被問及之前,我已經嘗試了我在這裏看到的技術。但它不起作用。SQL左自加入

我有「人」,這看起來像一個桌子

是PersonID,PERSONNAME,PersonYOB,PersonCOB,FatherID

1 Fred Astaire 1963 USA 2 
2 Bruce Astaire 1933 USA NULL 
3 Adele Astaire 1961 FR  2 
4 Gene Kelly  1965 IT  NULL 
5 Lucy Astaire 1935 USA NULL 

我想什麼做的是選擇在父親的名字來來自父親的PersonID。我也有媽媽,但爲了簡單起見,我已經刪除了它。一旦我得到父親的工作,我會在加回母親。

我現在的選擇是這樣的

SELECT p.*, f.PersonName AS FatherName FROM People 
LEFT OUTER JOIN People f ON 
p.PersonID = f.FatherID 

我的人都出現,但FatherName始終是NULL。

弗雷德阿斯泰爾應該顯示父親ID 2和f.PersonName作爲布魯斯阿斯泰爾。阿黛爾阿斯泰爾(他的妹妹)也是如此。

我錯過了什麼?

+0

你可以用'inner join'來達到這個目的... – Abbas

回答

0

在這裏你去inner join因爲你試圖加入表本身....

SELECT p.*, f.PersonName AS 'FatherName' FROM People p //here is the p you forgot 
    INNER JOIN People f ON 
    p.PersonID = f.FatherID 
0

您的加盟條件是不正確的。更改如下。

SELECT p.*, f.PersonName AS FatherName FROM People p 
LEFT OUTER JOIN People f ON 
p.FatherID= f.PersonID 
+0

非常感謝你!這只是我需要的語法修正。 –