Mit diesen Konzepten meistern Sie Joins

Um mit Abfragen effektiv umzugehen und ein gutes Datenbank-Design zu gewährleisten, braucht man ein gutes Verständnis von SQL-Join-Statements.

Über das hinaus, was die grundlegende Syntax zu bieten hat, gibt es mehrere Konzepte, die Ihr Wissen über Joins abrunden werden und die Bezugnahme auf Daten erleichtern werden, wie Aliasing, Self-Joins und ON-Klauseln.

Aliasing wird nicht nur bei Joins verwendet

Aliasing ist eine SQL-Funktion, die es Ihnen erlaubt, einen Platzhalter für eine Tabelle oder eine Liste innerhalb einer Abfrage zu erzeugen. Es kann auch beim Self-Join nützlich sein, was ich unten beschreiben werde.

Ein Alias hat das generelle Format: table_name.column_name AS alias. Dies erlaubt Ihnen, durch den zugewiesenen Handle Bezug auf das zugehörige Objekt zu nehmen. In sehr komplizierten JOIN-Anweisungen erleichtern Aliasse das Lesen und verkürzen den Schreibaufwand.

Dieses Beispiel zeigt die typische Verwendung eines Alias:


SELECT Co.company_name AS coname, Ind.industry_name
AS indname
FROM Company AS Co LEFT JOIN Industry AS Ind
ON Co.industry_id = Ind.industry_id
WHERE coname LIKE '%Tech%' AND indname = 'Computing';

Beachten Sie, dass das Schlüsselwort AS optional ist, ich empfehle seinen Gebrauch jedoch der Klarheit wegen. Ein Alias für Listen kann auch mit dem Format alias = table_name.column_name erzeugt werden, nicht aber für Tabellen.

Ein Self-Join verwendet nur eine Tabelle
Der Self-Join ist ein Art von Join-Anweisung, die auf eine einzelne normalisierte Tabelle angewandt wird. Im Grunde kann man einen Self-Join verwenden um hierarchische Relationen von Spalten innerhalb einer Tabelle abzuleiten. Man muss Aliase verwenden, um die Tabelle in Form von zwei virtuellen Instanzen ihrer selbst zu beschreiben und kann diese dann verbinden.

Eine typische Verwendung für ein Self-Join könnte eine Tabelle sein, auf der alle Mitarbeiter und Manager eines Unternehmens verzeichnet sind. Ein Self-Join erlaubt es, die Verbindungen mit einer einzigen Abfrage herzustellen, während man sich sonst mit einer Schleife im Code auseinandersetzen müsste.

Ein weiteres Beispiel für ein Self-Join könnte die Rückverfolgung eines Entwicklungsprojekts sein, in dem Sie Ihre Aufgaben in einer Tabelle aufgelistet haben. Unter anderem enthält Ihre Tabelle eine Spalte namens TaskID mit einer eigenen Nummer für jede Zeile und eine Spalte namens DependenceID, in der unter anderem die Task ID der Aufgabe steht, die abgeschlossen sein muss, bevor mit der aktuellen Aufgabe begonnen werden kann.

Um eine Liste der Tasks und deren Abhängigkeiten zu erhalten, können Sie solch einen Self-Join verwenden:


SELECT
Current.task_descr AS Task,
Previous.task_descr AS Dependence
FROM Project AS Current
LEFT JOIN Project AS Previous
ON Current.DependenceID = Previous.TaskID;

Diese Anweisung ergibt zwei Spalten mit den Titeln Task und Dependence, bei denen in jeder Zeile die relevanten Informationen dargestellt werden. Unter Verwendung des Self-Join kann man die Daten einer einzigen Tabelle dazu benutzen, eine selbstbezogene Darstellung der innerhalb der Daten bestehenden Hierarchie wiederzugeben.

Mehrere Spalten können mit den Klauseln USING und ON verbunden werden
Neben der ON-Klausel kann man auch die USING-Klausel verwenden, um ein Equi-Join durchzuführen, bei dem der Wert einer Spalte der einen Tabelle einem Wert in einer Spalte der verbundenen (joined) Tabelle entspricht. Man kann auch jede dieser Anweisungen dazu verwenden, mehrere Spalten miteinander zu verbinden, was nützlich sein kann, wenn man verschachtelte JOIN-Anweisungen verwendet.

In der ON-Klausel kann man Spaltenbezeichnungen angeben, was bedeutet, dass man die Daten aus zwei Spalten, die nicht denselben Namen tragen, miteinander abgleichen kann. Um eine Suche in mehreren Spalten durchzuführen, trennen Sie die Kriterien mit dem Schlüsselwort AND. (Im Abschnitt zum Thema JOIN-Reihenfolge sehen Sie ein Beispiel dieser Art der Verwendung.)

In der USING-Klausel müssen die Spaltennamen dieselben sein und in beiden zu verbindenden Tabellen vorkommen. Wenn Sie zum Zusammenfügen mehrere Spalten verwenden, trennen Sie die Spaltennamen mit einem Komma. Es folgt ein einfaches Beispiel für die Syntax der USING-Klausel:


SELECT * FROM User INNER JOIN Event USING (userid);

Kontrolle der JOIN-Reihenfolge
Klammern werden in JOIN-Anweisungen nicht unbedingt benötigt, man kann sie aber verwenden, um die natürliche Ordnung einer JOIN-Anweisung zu verändern, wenn es sich um mehr als zwei Spalten handelt, Normalerweise werden JOIN-Anweisungen entweder von links nach rechts bearbeitet (in der Reihenfolge, wie sie in der Abfrage erscheinen), oder die Reihenfolge wird vor der Ausführung vom Abfragen-Optimierer (Query Optimizer) der Datenbank bestimmt.

Einige Datenbanken, wie SQL-Server, Oracle und DB2, unterstützen auch das Konzept der JOIN HINT-Schlüsselwörter. Diese Schlüsselwörter werden in eine JOIN-Anweisung eingefügt, um die Reihenfolge zu bestimmen, in der die JOINs abgewickelt werden. So verbindet zum Beispiel MERGE JOIN zwei Tabellen miteinander, bevor irgend eine andere Tabelle bearbeitet wird, und ein HASH JOIN integriert eine Tabelle in die Ergebnisse einer JOIN-Anweisung, die bereits ausgeführt wurde. JOIN HINTS können jedoch die Leistung der Datenbank stark negativ beeinflussen und sollten DBAs überlassen werden.

Ihre Alternative ist die Verwendung von Klammern zur Festlegung der Reihenfolge, in der die JOINs ausgeführt werden. Hier ein Beispiel für die Verwendung von Klammern für die Tabellen Catalog, Product und Color:


SELECT Catalog.item, Catalog.item_color, Product.item,
Color.color_name
FROM Catalog
FULL OUTER JOIN ( Product CROSS JOIN Color )
ON Catalog.item = Product.item
AND Catalog.item_color = Color.color_name;

Werden Sie Datenbank-Profi
Die JOIN-Anweisung ist besonders für das Ansteuern gewünschter Informationen bei geringst möglichem Aufwand nützlich. Wenn Sie die oben aufgeführten Konzepte berücksichtigen, sind Sie auf gutem Wege, die JOIN-Anweisung und den Gebrauch von Datenbanken zu beherrschen. Ganz allgemein werden Ihnen Aliasing, Self-Joins und verschachtelte Join-Anweisungen dabei helfen, mit Datenbanken umzugehen wie ein Profi.

Themenseiten: Big Data, Datenbank, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

ZDNet für mobile Geräte
ZDNet-App für Android herunterladen Lesen Sie ZDNet-Artikel in Google Currents ZDNet-App für iOS

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Mit diesen Konzepten meistern Sie Joins

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *