2016-12-25 102 views
1

有 我有這張表'customer'that self-reference。該表看起來像這樣SQL自引用加入查詢不顯示所有條目

customer 
--------- 
id_cus name  sex  id_cus_family family_as 
001  A  M  002    son 
002  B  F  001    mother 
003  C  M  002    husband 
004  D  M  003    father 

id_cus_family被引用id_cus。我試圖查詢顯示所有條目,並將其姓氏的名稱添加爲新列。我用這個:

SELECT 
    c1.* , c2.name AS family_name 
FROM 
    customer c1 
    inner join customer c2 on c2.id_cus = c1.id_cus_family 

但是結果沒有顯示客戶表中的所有條目。結果是這樣的:

query result 
--------- 
id_cus name  sex  id_cus_family family_as family_name 
001  A  M  002    son   B 
002  B  F  001    mother  A 
002  B  F  001    mother  C 
003  C  M  003    husband  D 

它應該顯示所有結果吧?或者我的查詢代碼有問題? 我真的很感謝幫助。

+3

用'左加入' –

+0

哇,我從來沒有想過,謝謝! – hahaharies

回答

0

您可以使用Left outer join

SELECT 
    c1.* , c2.name AS family_name 
FROM 
    customer c1 
left outer join customer c2 
    on c2.id_cus = c1.id_cus_family 
2

我已經修改您的查詢像這樣:

SELECT c1.*,c2.name as family_name 
FROM Customer as c1 
JOIN Customer as c2 ON c1.id_cus_family=c2.id_cus 

結果會是這樣:

id_cus name sex id_cus_family family_as family_name 
1  A  M 2    son  B 
2  B  F 1    mother A 
3  C  M 2    husband B 
4  D  M 3    father C