SQL INNER JOIN und LEFT JOIN: Unterschiede und Anwendungsfälle im Detail erklärt

SQL INNER JOIN und LEFT JOIN sind häufig verwendete Operationen in Datenbankabfragen. Diese Operationen sind unverzichtbar für die Integration von Daten und die Anpassung von Suchergebnissen. Sie haben jeweils unterschiedliche Eigenschaften und werden in verschiedenen Szenarien verwendet. In diesem Artikel werden die Unterschiede zwischen INNER JOIN und LEFT JOIN im Detail erläutert, und es werden praktische Anwendungsbeispiele sowie geeignete Einsatzmöglichkeiten vorgestellt.

Inhaltsverzeichnis

Was ist INNER JOIN?

INNER JOIN ist eine SQL-Operation, die verwendet wird, um zwei oder mehr Tabellen zu verbinden. Diese Operation umfasst nur die Datensätze im Ergebnissatz, die die Join-Bedingung erfüllen. Zum Beispiel, wenn es zwei Tabellen gibt, gibt INNER JOIN nur die Zeilen zurück, die in beiden Tabellen auf Basis eines gemeinsamen Schlüssels übereinstimmen. Dadurch können nur relevante Daten extrahiert werden. INNER JOIN ist sehr nützlich, um die genaue Beziehung zwischen den Tabellen zu klären und unnötige Daten auszuschließen.

Beispiel für INNER JOIN

Im Folgenden wird gezeigt, wie INNER JOIN anhand eines konkreten SQL-Befehls verwendet wird. In diesem Beispiel verwenden wir eine customers-Tabelle, die Kundeninformationen enthält, und eine orders-Tabelle, die Bestellinformationen verwaltet.

Beispiel: Verknüpfung von Kunden und Bestellungen

Der folgende SQL-Befehl verknüpft Kunden mit ihren Bestellinformationen. Der gemeinsame Schlüssel ist die Kunden-ID (customer_id).

SELECT 
    customers.customer_id,
    customers.customer_name,
    orders.order_id,
    orders.order_date
FROM 
    customers
INNER JOIN 
    orders
ON 
    customers.customer_id = orders.customer_id;

Diese Abfrage verknüpft die customers-Tabelle mit der orders-Tabelle, wobei nur Datensätze zurückgegeben werden, bei denen die customer_id übereinstimmt. Das Ergebnis umfasst die Kunden-ID, den Kundennamen, die Bestell-ID und das Bestelldatum. Mit INNER JOIN werden Kunden ohne Bestellungen und Bestellungen ohne zugehörige Kunden nicht im Ergebnissatz berücksichtigt.

Was ist LEFT JOIN?

LEFT JOIN ist eine SQL-Operation, die verwendet wird, um zwei oder mehr Tabellen zu verbinden, wobei alle Datensätze aus der linken Tabelle im Ergebnissatz enthalten sind, und die passenden Datensätze aus der rechten Tabelle hinzugefügt werden. Wenn keine passenden Datensätze in der rechten Tabelle gefunden werden, wird NULL zurückgegeben. LEFT JOIN wird hauptsächlich verwendet, um alle Daten aus der linken Tabelle zu behalten und zusätzliche Informationen aus der rechten Tabelle aufzunehmen.

Beispiel für LEFT JOIN

Im Folgenden wird gezeigt, wie LEFT JOIN anhand eines konkreten SQL-Befehls verwendet wird. Auch hier verwenden wir eine customers-Tabelle, die Kundeninformationen enthält, und eine orders-Tabelle, die Bestellinformationen verwaltet.

Beispiel: Verknüpfung von Kunden und Bestellungen

Der folgende SQL-Befehl verknüpft alle Kunden mit ihren Bestellinformationen. Der gemeinsame Schlüssel ist die Kunden-ID (customer_id).

SELECT 
    customers.customer_id,
    customers.customer_name,
    orders.order_id,
    orders.order_date
FROM 
    customers
LEFT JOIN 
    orders
ON 
    customers.customer_id = orders.customer_id;

Diese Abfrage verknüpft alle Datensätze aus der customers-Tabelle mit denen aus der orders-Tabelle, wobei die customer_id übereinstimmt. Das Ergebnis enthält die Kunden-ID, den Kundennamen, die Bestell-ID und das Bestelldatum. Mit LEFT JOIN werden auch Kunden, die keine Bestellungen haben, im Ergebnissatz berücksichtigt, wobei in solchen Fällen NULL für die Bestellinformationen zurückgegeben wird.

Unterschiede zwischen INNER JOIN und LEFT JOIN

Um die Unterschiede zwischen INNER JOIN und LEFT JOIN besser zu verstehen, werden wir das Verhalten der beiden Operationen anhand von Diagrammen erklären.

Das Verhalten von INNER JOIN

INNER JOIN gibt nur die Datensätze zurück, die in beiden Tabellen vorhanden sind. Wenn zum Beispiel die customers-Tabelle mit der orders-Tabelle verknüpft wird, werden nur die Datensätze, die eine gemeinsame customer_id haben, im Ergebnissatz berücksichtigt.

customers Tabelle:
+-------------+----------------+
| customer_id | customer_name  |
+-------------+----------------+
| 1           | Alice          |
| 2           | Bob            |
| 3           | Charlie        |
+-------------+----------------+

orders Tabelle:
+-------------+----------+------------+
| order_id    | customer_id | order_date |
+-------------+----------+------------+
| 101         | 1        | 2023-01-10 |
| 102         | 3        | 2023-01-15 |
+-------------+----------+------------+

INNER JOIN Ergebnis:
+-------------+----------------+----------+------------+
| customer_id | customer_name  | order_id | order_date |
+-------------+----------------+----------+------------+
| 1           | Alice          | 101      | 2023-01-10 |
| 3           | Charlie        | 102      | 2023-01-15 |
+-------------+----------------+----------+------------+

Das Verhalten von LEFT JOIN

LEFT JOIN gibt alle Datensätze aus der linken Tabelle zurück und fügt, wenn vorhanden, die passenden Datensätze aus der rechten Tabelle hinzu. Wenn es keine übereinstimmenden Datensätze in der rechten Tabelle gibt, wird für diese NULL zurückgegeben.

LEFT JOIN Ergebnis:
+-------------+----------------+----------+------------+
| customer_id | customer_name  | order_id | order_date |
+-------------+----------------+----------+------------+
| 1           | Alice          | 101      | 2023-01-10 |
| 2           | Bob            | NULL     | NULL       |
| 3           | Charlie        | 102      | 2023-01-15 |
+-------------+----------------+----------+------------+

Wie man sieht, gibt INNER JOIN nur die gemeinsamen Datensätze beider Tabellen zurück, während LEFT JOIN alle Datensätze der linken Tabelle ausgibt und NULL zurückgibt, wenn keine Übereinstimmung in der rechten Tabelle gefunden wird.

Geeignete Anwendungsfälle für INNER JOIN und LEFT JOIN

Die Wahl zwischen INNER JOIN und LEFT JOIN hängt von den benötigten Daten und dem Ziel der Abfrage ab. Im Folgenden werden die geeigneten Anwendungsfälle für jede Join-Operation näher erläutert.

Anwendungsfälle für INNER JOIN

INNER JOIN ist geeignet, wenn nur die gemeinsamen Daten aus beiden Tabellen benötigt werden. Es wird in den folgenden Szenarien verwendet:

Abrufen von passenden Daten zu Kunden und Bestellungen

Wenn man nur Bestellinformationen von Kunden benötigt, die eine Bestellung aufgegeben haben, verwendet man INNER JOIN. Ein Beispiel dafür ist das Abrufen von Kundeninformationen, die ein bestimmtes Produkt gekauft haben.

SELECT 
    customers.customer_name,
    orders.order_id
FROM 
    customers
INNER JOIN 
    orders
ON 
    customers.customer_id = orders.customer_id
WHERE 
    orders.product_id = 123;

Anwendungsfälle für LEFT JOIN

LEFT JOIN ist geeignet, wenn alle Daten aus der linken Tabelle benötigt werden und zusätzliche Informationen aus der rechten Tabelle eingefügt werden sollen. Es wird in den folgenden Szenarien verwendet:

Überprüfen der Bestellhistorie aller Kunden

Wenn man eine Liste aller Kunden anzeigen und feststellen möchte, ob sie eine Bestellung aufgegeben haben oder nicht, verwendet man LEFT JOIN. Ein Beispiel dafür ist das Abrufen einer Liste aller Kunden und ihrer Bestellhistorie.

SELECT 
    customers.customer_name,
    orders.order_id
FROM 
    customers
LEFT JOIN 
    orders
ON 
    customers.customer_id = orders.customer_id;

Ermitteln von Kunden ohne Bestellungen

LEFT JOIN kann auch verwendet werden, um Kunden zu finden, die keine Bestellungen haben. Durch die Überprüfung auf NULL können Kunden ohne Bestellungen herausgefiltert werden.

SELECT 
    customers.customer_name
FROM 
    customers
LEFT JOIN 
    orders
ON 
    customers.customer_id = orders.customer_id
WHERE 
    orders.order_id IS NULL;

Wie gezeigt, eignet sich INNER JOIN zur Extraktion gemeinsamer Daten, während LEFT JOIN zur Beibehaltung der Vollständigkeit der linken Tabelle und zum Abrufen zusätzlicher Informationen aus der rechten Tabelle geeignet ist.

Fazit

INNER JOIN und LEFT JOIN sind zwei wichtige SQL-Operationen, die für unterschiedliche Zwecke verwendet werden. INNER JOIN extrahiert nur gemeinsame Daten aus beiden Tabellen und filtert die relevanten Daten strikt. LEFT JOIN hingegen behält alle Daten aus der linken Tabelle und fügt, falls vorhanden, passende Daten aus der rechten Tabelle hinzu. Durch das Verständnis der Eigenschaften beider Join-Operationen und deren Anwendung in geeigneten Szenarien kann man effiziente Datenbankabfragen erstellen.

Inhaltsverzeichnis