2016-03-21 5 views
0

Ich habe table1 und table2 mein Ziel ist es, eine Abfrage ausführen, die alle Daten nehmen verfügbar (den Code entspricht), das ist meine Abfrage tatsächlich:Wie man den Inhalt der Haupttabelle in JOIN zurückgibt?

SELECT * FROM table1 
     INNER JOIN table2 
     ON table1.code = table2.code 

Alle arbeiten gut, aber wenn zum Beispiel in den table2 einem spezifischen Code ist nicht vorhanden Die Daten des table1 werden nicht zurückgegeben. Ein Beispiel:

TABLE1

|CODE|Info| 
|R789|Home| 
|R788|Away| 

TABLE2

|CODE|DESCRIPTION| 
|R789| Test 

kehrt nur den Inhalt der R789, aber ich möchte, dass auch der Inhalt von R788 muss zurückgegeben werden, natürlich nur das Feld von table1 Ursache in table2 der Datensatz existiert nicht. Wie kann ich das machen?

+4

Verwenden Sie 'left join' anstelle von' inner join'. –

Antwort

2

Verwenden Sie eine LEFT JOIN, die Inhalt aus beiden Tabellen zurückgibt, wenn "CODE" in beiden vorhanden ist, und Elemente aus Tabelle1 mit NULL für Elemente aus Tabelle2, wenn der Code dort nicht vorhanden ist.

Viele Dokumente da draußen dafür. Hier ist one example und another one.

0

Wenn Sie aus beiden Tabellen, alle Daten zu erhalten, aber passend, wenn entspricht, sollten Sie eine vollständige äußere Verknüpfung verwenden:

select a.*, 
     b.* 
from table1 a 
full outer join 
     table2 b 
on  a.code=b.code 

Es wird kehrt etwas wie folgt aus:

|CODE|Info|CODE|DESCRIPTION| 
|R789|Home|R789|Test| 
|R788|Away|null|null| 

Grüße

Verwandte Themen