2017-09-06 3 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 

Problem ist, dass nur diejenigen Datensätze holen sind, die in Spender Tabelle Rest nicht angezeigt werden. Ich möchte Daten immer anzeigen, wenn die rechte Seite nicht gefunden wurdeJoin Abfrage für diese Ausgabe

+1

Ersten JOIN, lesen Sie über beitritt. Wenn Sie immer noch Probleme haben, lesen Sie: [Warum sollte ich MCVE für eine scheinbar einfache SQL-Abfrage bereitstellen?] (Https://meta.stackoverflow.com/questions/333952/why-should -ich-stelle-eine-mcve-für-was-scheint-mir-sein-eine-sehr-einfache-sql-abfrage) – Strawberry

Antwort

0

Sie benötigen eine LEFT JOIN dafür. Es kann mit Ihrer Syntax (die nicht verwendet werden soll!) Durch ein Pluszeichen + erledigt werden. Ich rate Ihnen nur explizite Art verwenden den Joins:

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

Gib einem Mann einen Fisch :-( – Strawberry

+0

Wirklich hängt von dem Tag ab, und wie gelangweilt ich bin .. Normalerweise schreibe ich einen Kommentar :) @ Strawberry – sagi

0

Mit LINKS

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