SQL JOIN-Befehle zählen bei der Analyse und Be­ar­bei­tung von re­la­tio­na­len Da­ten­ban­ken zu den wich­tigs­ten SQL-Befehlen. Sie er­mög­li­chen es, ver­knüpf­te Daten in mehreren Tabellen ab­zu­fra­gen und in Er­geb­nis­ta­bel­len zu­sam­men­zu­füh­ren. Je nach An­wen­dungs­fall kommen hierzu JOIN-Befehle wie INNER JOIN, OUTER JOIN, LEFT JOIN, RIGHT JOIN oder FULL JOIN zum Einsatz.

Was sind SQL JOIN-Befehle?

Für die Arbeit mit Da­ten­ban­ken – ganz gleich, ob On-Premises oder per Cloud – gilt die Pro­gram­mier- und Da­ten­bank­spra­che SQL als Standard. Sie er­mög­licht es nicht nur, re­la­tio­na­le Da­ten­ban­ken zu erstellen, sondern auch Da­ten­ab­fra­gen mittels diverser SQL-Befehle durch­zu­füh­ren. Zu den wich­tigs­ten und am häu­figs­ten ver­wen­de­ten Befehlen zählt die Kategorie der SQL JOINS.

Bei SQL JOINS handelt es sich um Befehle, mit denen Sie Daten ta­bel­len­über­grei­fend abfragen, ver­knüp­fen und aus­sa­ge­kräf­tig zu­sam­men­füh­ren. Als Vor­aus­set­zung gilt lediglich eine logische Ver­bin­dung zwischen den Tabellen. Diese Ver­bin­dung stellen ent­spre­chen­de Primär- und Fremd­schlüs­sel her, über die sich Daten mittels JOIN-Befehle zu­sam­men­füh­ren lassen.

Hinweis

Primär- und Fremd­schlüs­sel bilden wichtige Kennwerte für SQL JOINS. Pri­mär­schlüs­sel iden­ti­fi­zie­ren Zeilen eindeutig und dürfen keine Nullwerte enthalten. Fremd­schlüs­sel stellen eine Ver­bin­dung zwischen Tabellen her. Beispiel: In einer An­ge­stell­ten-Tabelle dient „An­ge­stell­ten ID“ als Pri­mär­schlüs­sel. In einer KFZ-Tabelle ist „KFZ ID“ der Pri­mär­schlüs­sel. Beide Tabellen lassen sich mit „KFZ ID“ als Fremd­schlüs­sel in der An­ge­stell­ten-Tabelle ver­knüp­fen.

Welche Arten von SQL JOIN-Befehlen gibt es?

Je nach An­wen­dungs­fall bieten sich ver­schie­de­ne JOIN-Befehle an. Zunächst werfen wir einen Blick auf die grund­le­gen­den Parameter:

  • SELECT: Legt Spalten fest, die für SQL JOIN in Frage kommen. Mit einem Asterisk (*) lässt sich auch der ganze Datensatz auswählen.
  • FROM: Legt die Tabelle fest, aus der Daten mit einer weiteren Tabelle zu­sam­men­ge­führt werden.
  • JOIN Befehl: Erzeugt gemäß dem JOIN-Befehl eine Ziel­ta­bel­le, die aus­ge­wähl­te Daten verknüpft, zu­sam­men­führt oder ver­gleicht.
  • ON: Legt fest, nach welcher JOIN-Bedingung, ab­ge­ru­fe­ne Daten zu­sam­men­ge­führt werden.

Die grund­le­gen­de Syntax enthält bei den meisten SQL JOIN-Befehlen dieselben oder ähnliche Parameter und sieht wie folgt aus:

SELECT  spalteA,  spalteB, …
FROM  tabelleA
JOIN-Befehl  tabelleB
ON  tabelleA.spalte  =  tabelleB.spalte
sql
Tipp

Sie suchen nach einer sicheren, leis­tungs­star­ken Lösung für Ihr Datenbank-Ma­nage­ment-System? Dann bietet Ihnen SQL Server Hosting von IONOS die passenden Server- und Hosting-Angebote mit deutschen Da­ten­schutz­stan­dards – dazu zählen Cloud Server, vServer (VPS), Dedicated Server oder Linux Hosting mit MSSQL, MySQL oder MariaDB

vServer / VPS
VPS un­schlag­bar günstig auf Dell En­ter­pri­se Servern
  • 1 Gbit/s, un­be­grenzt Traffic & mehr Cores
  • Min­des­tens 99,99% Ver­füg­bar­keit & ISO-zer­ti­fi­zier­te Re­chen­zen­tren
  • Aus­ge­zeich­ne­ter 24/7 Premium-Support mit per­sön­li­chem Berater

Zu den wich­tigs­ten SQL JOIN-Befehlen zählen die im Folgenden vor­ge­stell­ten.

SQL INNER JOIN

Mit diesem Befehl führen Sie Daten aus zwei Tabellen in einer Er­geb­nis­ta­bel­le zusammen, wenn zwei über­ein­stim­men­de Werte in einer ge­mein­sa­men Spalte vorliegen. Der INNER JOIN dient als häu­figs­ter JOIN-Befehl und als Stan­dard­ein­stel­lung, wenn Sie keinen konkreten JOIN-Typ wählen.

Prak­ti­sches Beispiel:

Der INNER JOIN kommt für eine Tabelle „Be­stel­lun­gen“ mit den Spalten „Be­stell­num­mer“, „KundenID“, „ProduktID“ und „Be­stell­da­tum“ sowie für eine Tabelle „Kunden“ mit den Spalten „KundenID“, „Name“ und „Adresse“ zum Einsatz. Die Spalte „KundenID“ dient in „Kunden“ als Pri­mär­schlüs­sel und in „Be­stel­lun­gen“ als Fremd­schlüs­sel. Der INNER JOIN führt anhand der KundenID alle Be­stel­lun­gen und Kun­den­da­ten von Kunden und Kundinnen in der Er­geb­nis­ta­bel­le zusammen.

Der SQL INNER JOIN-Befehl sieht wie folgt aus:

SELECT  bestellungen.bestellnummer, kunden.name, bestellungen.produktid, bestellungen.bestelldatum
FROM  bestellungen
INNER JOIN  kunden
ON  bestellungen.kundenid  =  kunden.kundenid
sql

OUTER JOIN

OUTER JOIN dient als Ober­be­griff für die Befehle SQL LEFT JOIN, RIGHT JOIN und FULL JOIN. Der SQL OUTER JOIN führt Gegensatz zum INNER JOIN nicht nur über­ein­stim­men­de Zeilen, sondern auch nicht über­ein­stim­men­de Zeilen per NULL-Wert zusammen. Eine de­tail­lier­te Erklärung folgt unter LEFT JOIN, OUTER JOIN und FULL JOIN.

SQL LEFT JOIN

Der Befehl LEFT JOIN verknüpft alle Daten einer linken Tabelle mit über­ein­stim­men­den Daten der rechten Tabelle. Bei nicht über­ein­stim­men­den Daten gibt der Befehl ein NULL-Wert aus.

Prak­ti­sches Beispiel:

Der SQL LEFT JOIN führt sowohl über­ein­stim­men­de als auch nicht über­ein­stim­men­de Da­ten­sät­ze aus einer linken Tabelle „Kunden“ mit einer rechten Tabelle „Kfz“ anhand der ge­mein­sa­men Spalte „KfzID“ zusammen. Im Gegensatz zum INNER JOIN gibt der Befehl auch nicht über­ein­stim­men­de Daten mit dem Wert NULL aus.

Der SQL LEFT JOIN-Befehl sieht wie folgt aus:

SELECT  *
FROM  kunden
INNER JOIN  kfz
ON  kunden.kfzid  =  kfz.kfzid
sql

SQL RIGHT JOIN

Der Befehl RIGHT JOIN verknüpft Daten aus der rechten Tabelle mit über­ein­stim­men­den Daten der linken Tabelle. Bei Nicht­über­ein­stim­mung steht ebenfalls ein NULL-Wert in Spalten der linken Tabelle.

Prak­ti­sches Beispiel:

Der SQL RIGHT JOIN fügt anhand der KundenID zu Daten einer rechten Tabelle „Kunden“ alle aus­ge­wähl­ten Daten einer linken Tabelle „Be­stel­lun­gen“ hinzu. Bei Nicht­über­ein­stim­mung gibt der Befehl den Wert NULL an – bei­spiels­wei­se, wenn für eine KundenID weder Be­stel­lun­gen noch Namen vorliegen.

Der SQL RIGHT JOIN-Befehl sieht wie folgt aus:

SELECT  bestellungen.bestellnummer, kunden.name, bestellungen.produktid, bestellungen.bestelldatum
FROM  kunden
RIGHT JOIN  bestellungen
ON  bestellungen.kundenid  =  kunden.kundenid
sql

SQL FULL JOIN

Der Befehl FULL JOIN stellt eine Kom­bi­na­ti­on aus LEFT JOIN und RIGHT JOIN dar und ist auch als FULL OUTER JOIN bekannt. Der Befehl führt alle Da­ten­sät­ze und Spalten aus beiden Tabellen zusammen. Bei Nicht­über­ein­stim­mung gibt der Befehl NULL-Werte aus.

Prak­ti­sches Beispiel:

Der FULL JOIN führt alle über­ein­stim­men­den sowie nicht über­ein­stim­men­den Daten einer rechten Tabelle „Mit­ar­bei­te­rin­nen und Mit­ar­bei­ter“ mit einer linken Tabelle „Abteilung“ anhand der KundenID zusammen. Lässt sich keine Abteilung zuordnen, steht ein NULL-Wert bei Abteilung.

Der SQL FULL JOIN-Befehl sieht wie folgt aus:

SELECT  *
FROM  mitarbeiterinnen und mitarbeiter
FULL JOIN  kunden
ON  mitarbeiter.abteilungid  =  abteilung.abteilungid
sql

CROSS JOIN

Der CROSS JOIN ist auch als kar­te­si­scher JOIN bekannt. Er verknüpft sämtliche Da­ten­sät­ze der linken und rechten Tabelle un­ab­hän­gig von Über­ein­stim­mun­gen. Da er alle möglichen Kom­bi­na­tio­nen zu­rück­gibt, braucht es keine On-Klausel für eine JOIN-Bedingung.

Prak­ti­sches Beispiel:

Der CROSS JOIN führt alle Daten der rechten Tabelle „Produkte“ mit der linken Tabelle „Be­stel­lun­gen“ zusammen.

Der SQL CROSS JOIN-Befehl sieht wie folgt aus:

SELECT  *
FROM  produkte
CROSS JOIN  bestellungen
sql

NATURAL JOIN

Der Befehl NATURAL JOIN verknüpft alle Da­ten­sät­ze von zwei Tabellen anhand ge­mein­sa­mer Spalten. Der Parameter ON entfällt, da eine ge­mein­sa­me Spalte keine Vor­aus­set­zung ist. Da der Befehl au­to­ma­tisch ge­mein­sa­me Spalten der Tabellen zu­sam­men­führt, entfällt die ON-Klausel.

Prak­ti­sches Beispiel:

Der NATURAL JOIN führt die Tabellen „Team“ und „Abteilung“ anhand ge­mein­sa­mer Spalten in zusammen. Der Befehl liefert nur Er­geb­nis­se, wenn min­des­tens eine ge­mein­sa­me Spalte vorliegt.

SQL NATURAL JOIN sieht wie folgt aus:

SELECT  *
FROM  bestellungen
NATURAL JOIN  kunden
sql

SQL SELF JOIN

Der Befehl SQL SELF JOIN verknüpft eine Tabelle mit sich selbst, indem er sie als linke und rechte Tabelle behandelt. Sie können daher grund­sätz­lich jeden anderen Befehl für eine SELF-JOIN-Operation nutzen. In der Syntax dienen t1 und t2 als Aliasses für eine rechte und linke Tabelle, da es sich um dieselbe Tabelle handelt.

Grund­le­gen­de Syntax am Beispiel LEFT JOIN:

SELECT  *
FROM  tabelleA AS t1
LEFT JOIN  tabelleA AS t2
ON  t1.spaltename  =  t2.spaltenname
sql
Tipp

Um einen schnellen Einblick in die Anwendung von SQL zu bekommen, beachten Sie auch unsere SQL-Ein­füh­rung mit Bei­spie­len.

Zum Hauptmenü