SQL > SQL Befehle > Join 

Sehen wir uns nun den Begriff des Verbunds, des Joins, näher an. Eine korrekte Join-Verknüpfung in SQL setzt viele der bisher vorgestellten Elemente voraus. Nehmen wir an, es liegen die folgenden zwei Tabellen vor,

Tabelle Store_Information

Store_Name Sales Txn_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 pro Region ermitteln. Die Tabelle Geography enthält Informationen zu Regionen und Warenhäusern und die Tabelle Store_Information Umsatzdaten für die einzelnen Warenhäuser. Um nun die Umsatzdaten für die jeweiligen Regionen anzeigen zu lassen, müssen wir die Daten der beiden Tabellen kombinieren. Wenn wir uns die beiden Tabellen genauer ansehen, stellen wir fest, dass sie über das gemeinsame Feld "Warenhaus_Name" verknüpft sind. Hier zunächst die SQL-Anweisung, die Verwendung der einzelnen Segmente wird dann anschließend erläutert:

SELECT A1.Region_Name REGION, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.Store_Name = A2.Store_Name
GROUP BY A1.Region_Name;

Ergebnis:

REGION SALES
East 700
West 2050

Die ersten beiden Zeilen weisen SQL an, zwei Felder auszuwählen. Das erste ist das Feld "Region_Name" aus der Tabelle Geography (mit dem Alias REGION) und das zweite die Summe des Felds "Umsatz" aus der Tabelle Store_Information (mit dem Alias UMSATZ). Beachten Sie die Verwendung der Tabellenaliasse: Geography hat den Alias A1 und Store_Information den Alias A2. Ohne die Aliasnamen sähe die erste Zeile wie folgt aus:

SELECT Geography.Region_Name REGION, SUM(Store_Information.Sales) SALES

und wäre somit deutlich unübersichtlicher. Im Wesentlichen machen Tabellenaliasse die gesamte SQL-Anweisung verständlicher, insbesondere wenn mehrere Tabellen miteinbezogen sind.

Sehen wir uns nun die dritte Zeile mit der WHERE-Anweisung genauer an. Hier wird die Verbundbedingung festgelegt. Im vorliegenden Fall möchten wir sicherstellen, dass der Inhalt im Feld "Warenhaus_Name" in der Tabelle demjenigen in der Tabelle Store_Information entspricht. Dies erreichen wir, indem wir die Inhalte gleichsetzen. Diese WHERE-Anweisung ist entscheidend für die richtige Ausgabe. Ohne korrekte WHERE-Anweisung ergibt sich ein kartesischer Verbund. Damit würde die Abfrage alle möglichen Kombinationen der zwei Tabellen (oder wie groß auch immer die Anzahl der Tabellen in der FROM-Anweisung ist) ausgeben. Im vorliegenden Fall wäre das Ergebnis eines kartesischen Verbunds eine Gesamtzahl von 4 x 4 = 16 Zeilen. 

SQL Outer Join >>





Copyright © 2014   1keydata.com   Alle Rechte vorbehalten.