2017-09-06 45 views
0
I have the following two MySQL tables which I need to join: 

A (donor)  B (documents)  
============ ============================= 
id | name  id | profile_img | ref_id 
------------ ----------------------------- 
    1 | Alex   1 | a.png   | 1 
    2 | Bill   2 | b.jpg   | 2 
    3 | Cath   3 | c.jpg   | 3 
    4 | Dale   4 | d.jpg   | 4 
    5 | Evan 
    6 | Test 
    7 | Test2 



SELECT d.name, d.id, c.name, c.ref_id FROM donor d, documents c WHERE 
ref_id = d.id 

問題是隻有那些記錄是在捐贈者表中休息不會顯示。我想在右側匹配未找到時始終顯示數據加入查詢的這些問題

+1

首先,瞭解連接。然後,如果你還在掙扎,請看:[爲什麼我應該爲我認爲是非常簡單的SQL查詢提供一個MCVE?](https://meta.stackoverflow.com/questions/333952/why-should -i-provide-an-mcve-for-what-looks-to-what-seems-a-very-simple-sql-query) – Strawberry

回答

0

您需要一個LEFT JOIN。它可以通過一個加號+來完成你的語法(不應該使用!)。我勸你的加入只使用顯式類型:

SELECT d.name, d.id, COALESCE(c.name,'DefaultVal') , COALESCE(c.ref_id,'DefaultVal') 
FROM donor d 
LEFT JOIN documents c 
ON(ref_id = d.id) 
+0

給一個男人一條魚:-( – Strawberry

+0

真的取決於一天,我很無聊,通常我會寫評論:) @Strawberry – sagi

0

使用LEFT JOIN

SELECT d.name, d.id, c.name, c.ref_id FROM donor d LEFT JOIN documents c ON 
d.id = c.id WHERE c.ref_id=d.id