2012-03-27 7 views
2

zwei Tabellen Apfel und Orange,SQL-Abfrage zum Verknüpfen von Ergebnissen aus zwei Tabellen, aber auch Zeilen, die keine Gegenstücke in der anderen Tabelle enthalten?

NAME  APPLES 
Alice  5 
Bob  10 
Trudy  1 

NAME  ORANGES 
Bob  50 
Trudy  10 
Dick  10 

Wie kann ich schreiben ein, die Tabelle zeigen JOIN:

NAME  APPLES  ORANGES 
Alice  5   - 
Bob  10   50 
Trudy  1   10 
Dick  -   10 

Ich habe derzeit

SELECT a.NAME, APPLES, ORANGES 
FROM APPLE a 
JOIN 
ORANGE o ON o.NAME = a.NAME 

aber das gibt nur die Felder die einen Wert sowohl in APPLE als auch in ORANGE haben.

Antwort

5
SELECT COALESCE(a.NAME, b.NAME) as NAME, APPLES, ORANGES 
FROM APPLE a 
FULL OUTER JOIN ORANGE o ON o.NAME = a.NAME 
+0

Gut, es meistens funktioniert, aber jetzt, was passiert, ist, weil ich NAME von a oder von o auswähle, welche Namen in einer Tabelle sind, aber nicht die andere wird nicht angezeigt. Irgendeine Reparatur für das? – antonpug

+0

Siehe oben, ich fügte eine "COALESCE" hinzu. – RedFilter

+0

Oh nvm, @Francis_P hab es geschafft! – antonpug

4
SELECT a.NAME, a.APPLES, o.ORANGES 
FROM APPLE a 
FULL OUTER JOIN 
ORANGE o ON o.NAME = a.NAME 
1

ändern JOIN-FULL OUTER JOIN.

3

sollte sein:

SELECT COALESCE(a.NAME,o.name) as Name, APPLES, ORANGES 
FROM APPLE a 
FULL OUTER JOIN ORANGE o ON o.NAME = a.NAME 

Beispiel: http://sqlfiddle.com/#!4/1ae9a/4

0

Sie haben eine Links-Rechts-Außen verwenden join je nachdem, welche Tabelle enthält die inclomplete Daten

Verwandte Themen