FULL JOIN - beidseitige Inklusionsverknüpfung

Syntax

    FROM Tabelle1 [Alias1] FULL JOIN Tabelle2 [Alias2] ON {Tabelle1|Alias1}.Feld1 = {Tabelle2|Alias2}.Feld2
    ab SQL92 (explizite Beschreibung von Tabellen-Verknüpfungen)

    SELECT Feldliste FROM Tabelle1 [Alias1] LEFT JOIN Tabelle2 [Alias2] ON {Tabelle1|Alias1}.Feld1 = {Tabelle2|Alias2}.Feld2 UNION
    SELECT Feldliste FROM Tabelle1 [Alias1] RIGHT JOIN Tabelle2 [Alias2] ON {Tabelle1|Alias1}.Feld1 = {Tabelle2|Alias2}.Feld2

    ab SQL92 (falls die direkte deklaration eines Union Joins nicht unterstützt wird)

    SELECT Feldliste FROM Tabelle1 [Alias1], OUTER Tabelle2 [Alias2]
    WHERE {Tabelle1|Alias1}.Feld1 = {Tabelle2|Alias2}.Feld2 UNION
    SELECT Feldliste FROM OUTER Tabelle1 [Alias1], Tabelle2 [Alias2]
    WHERE {Tabelle1|Alias1}.Feld1 = {Tabelle2|Alias2}.Feld2

    Informix vor SQL92 (implizite Join-Deklaration)

    SELECT Feldliste FROM Tabelle1 [Alias1], Tabelle2 [Alias2]
    WHERE ({Tabelle1|Alias1}.Feld1 = {Tabelle2|Alias2}.Feld2(+)) UNION
    SELECT Feldliste FROM Tabelle1 [Alias1], Tabelle2 [Alias2]
    WHERE ({Tabelle1|Alias1}.Feld1(+) = {Tabelle2|Alias2}.Feld2)

    Oracle vor SQL92 (implizite Join-Deklaration)

Beschreibung

    Der Full Join bzw. Full Outer Join ist die Tabellenverküpfung, welche zusätzlich zu den Datensätzen aus zwei Tabellen, bei denen ein Feld (das jeweilige) dieselben Werte enthält auch alle Datensätze aus der ersten (linken) und der zweiten (rechten) Tabelle mit in das Ergebnis einfügt, welche keine Entsprechung in der jeweils anderen tabelle haben.

    Wichtig ist, dass wenn ein Full-Join nicht direkt durch die datenbank unterstützt wird (Syntax 1), alle verknüpfbaren Datensätze durch die zwei SELECT-Statements zwei mal ausgewählt werden und erst im zweiten Schritt durch die UNION-Klausel ohne ALL-Zusatz bereinigt werden.

    Beispiel:

-- SQL 92
SELECT a.vnum, a.vname, b.knum, b.kname
FROM tverkauf a FULL JOIN tkunden b ON a.vnum = b.vnum
ORDER BY vnum;

Ergebnis:

vnum vname       knum kname
                 10   Testcustomer
1    Mueller     1    Lehmann
1    Mueller     2    Schmidt
1    Mueller     3    Schumacher
2    Meyer       4    Schroeder
2    Meyer       5    Stoiber
3    Schulz      6    Lohmann
3    Schulz      7    Krupp
3    Schulz      8    Stradivari
3    Schulz      9    Schumacher
4    Burgmueller 		
Auflistung aller Verkäufer und aller dazu passenden Kunden, ohne irgendwelche Datensätze aus einer der beiden Tabellen auszulassen.