Mit diesen Konzepten meistern Sie Joins

Ü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.

ZDNet.de Redaktion

Recent Posts

Microsoft nennt weitere Details zu kostenpflichtigen Patches für Windows 10

Erstmals liegen Preise für Verbraucher vor. Sie zahlen weniger als Geschäftskunden. Dafür beschränkt Microsoft den…

2 Stunden ago

Microsoft verschiebt erneut Copilot Recall

Die Entwickler arbeiten noch an weiteren „Verfeinerungen“. Windows Insider erhalten nun wohl eine erste Vorschau…

20 Stunden ago

GenKI im Job: Mitarbeitende schaffen Tatsachen

Laut Bitkom-Umfrage werden in jedem dritten Unternehmen in Deutschland private KI-Zugänge genutzt. Tendenz steigend.

22 Stunden ago

97 Prozent der Großunternehmen melden Cyber-Vorfälle

2023 erlitten neun von zehn Unternehmen in der DACH-Region Umsatzverluste und Kurseinbrüche in Folge von…

22 Stunden ago

„Pacific Rim“-Report: riesiges, gegnerisches Angriffs-Ökosystem

Der Report „Pacific Rim“ von Sophos beschreibt Katz-und-Maus-Spiel aus Angriffs- und Verteidigungsoperationen mit staatlich unterstützten…

1 Tag ago

DeepL setzt erstmals auf NVIDIA DGX SuperPOD mit DGX GB200-Systemen

NVIDIA DGX SuperPOD soll voraussichtlich Mitte 2025 in Betrieb genommen und für Forschungsberechnungen genutzt werden.

1 Tag ago