SQL Outer Join



SQL SELECT
SQL DISTINCT
SQL WHERE
SQL AND OR
SQL IN
SQL BETWEEN
SQL LIKE
SQL ORDER BY
SQL Funktionen
SQL COUNT
SQL GROUP BY
SQL HAVING
SQL ALIAS
SQL JOIN
SQL OUTER JOIN
SQL Unterabfrage
SQL UNION
SQL UNION ALL
SQL INTERSECT
SQL MINUS
SQL Kaskadieren
SQL SUBSTRING
SQL TRIM


Seitenübersicht



  SQL > SQL Befehle > Outer Join

Im vorhergehenden Abschnitt haben wir uns mit dem linken oder inneren Verbund beschäftigt, bei dem Zeilen ausgewählt werden, die den verknüpften Tabellen gemeinsam sind. Nun könnten wir aber auch an Elementen in einer Tabelle interessiert sein, die sich nicht unbedingt in der zweiten Tabelle befinden. In diesem Fall müssen wir den Befehl SQL OUTER JOIN verwenden.

Die Syntax für die Verknüpfung als äußerer Verbund in SQL ist datenbankabhängig. In Oracle zum Beispiel platzieren wir ein "(+)" in der WHERE-Klausel auf der anderen Seite der Tabelle, für die alle Zeilen mitaufgenommen werden sollen.

Nehmen wir an, es liegen die folgenden zwei Tabellen vor,

Tabelle Store_Information
store_name Sales Date
Los Angeles 1500€ 05.Jan.1999
San Diego 250€ 07.Jan.1999
Los Angeles 300€ 08.Jan.1999
Boston 700€ 08.Jan.1999

Tabelle Geography
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego

und wir möchten den Umsatz für alle Warenhäuser ermitteln. Bei einem regulären Verbund wäre dies nicht möglich, denn es würde das Warenhaus "New York" fehlen, das in der Tabelle Store_Information nicht enthalten ist. Wir müssen daher die zwei Tabellen zu einem äußeren Verbund kombinieren.

SELECT A1.store_name, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name (+)
GROUP BY A1.store_name

Beachten Sie, dass wir im vorliegenden Fall die Oracle-Syntax verwenden.

Ergebnis:

store_name SALES
Boston 700€
New York
Los Angeles 1800€
San Diego 250€

Hinweis: NULL wird ausgegeben, wenn es keine Entsprechung in der zweiten Tabelle gibt. Im vorliegenden Fall ist "New York" nicht in der Tabelle Store_Information enthalten, weshalb die entsprechende Spalte "UMSATZ" den Inhalt NULL hat. 

SQL Unterabfrage >>
free mmorpg