JOIN für MariaDB: Datensätze aus mehreren Tabellen zusammenführen

In einem relationalen Datenbankmanagementsystem können Datensätze in unterschiedlichen Tabellen miteinander verglichen werden. So ist es möglich, Verbindungen herzustellen und übereinstimmende Werte aus zwei Tabellen zu extrahieren. Diese Aufgabe wird in MariaDB durch JOIN übernommen. Die Anweisung wird in Kombination mit SELECT angewendet und kann in verschiedene Kategorien unterteilt werden, von denen wir Ihnen hier INNER JOIN, LEFT OUTER JOIN und RIGHT OUTER JOIN näher vorstellen.

Syntax und Funktionsweise

Damit Sie einen Überblick über die unterschiedlichen JOIN-Anweisungen in MariaDB gewinnen können, zeigen wir Ihnen zunächst die grundsätzliche Syntax der Anweisung. Diese sieht für INNER JOIN so aus:

SELECT spalte(n)
FROM tabelle_1
INNER JOIN tabelle_2
ON tabelle_1.spalte = tabelle_2.spalte;
sql

Mit SELECT wählen Sie dabei die Spalte (oder die Spalten) aus, die berücksichtigt werden sollen. Statt des Platzhalters „tabelle_1“ hinterlegen Sie Ihre erste Tabelle und statt „tabelle_2“ die zweite Tabelle, die mit der ersten verbunden werden soll. Durch INNER JOIN werden alle Zeilen der ersten Tabelle mit allen Zeilen der zweiten Tabelle verglichen. Ergebnisse, die übereinstimmen (also in beiden Tabellen vorhanden sind), werden dann gemeinsam in einer Ergebnistabelle ausgegeben. Einträge, die nicht übereinstimmen, werden hingegen auch nicht berücksichtigt.

Managed Database von IONOS

Datenbank-Services ohne Aufwand. Maßgeschneidert auf Ihre Bedürfnisse und individuell anpassbar!

Hochverfügbar
Sicher
Individuell

Beispiel für INNER JOIN in MariaDB

Um zu veranschaulichen, wie INNER JOIN in MariaDB funktioniert, wählen wir ein einfaches Beispiel. Dafür gehen wir von einer Datenbank aus, in der sich zwei Tabellen befinden. Die erste Tabelle nennt sich „Kundenliste“ und die zweite „Bestellungen“. „Kundenliste“ erstellen wir mit MariaDB CREATE TABLE. Sie enthält die Spalten „Kundennummer“, Nachname“, „Vorname“, „Stadt“ und „Erstellungsdatum“. Der Code sieht aus wie folgt:

CREATE TABLE Kundenliste (
	Kundennummer INT PRIMARY KEY,
	Nachname VARCHAR(50),
	Vorname VARCHAR(50),
	Stadt VARCHAR(50),
	Erstellungsdatum DATE
);
sql

Diese Tabelle füllen wir nun mit einigen Werten. Dafür nutzen wir INSERT INTO:

INSERT INTO Kundenliste VALUES
(1, 'Schmidt', 'Martina', 'Berlin', '2022-07-19'),
(2, 'Schulz', 'Bernd', 'Hamburg', '2023-03-03'),
(3, 'Meyer', 'Peter', 'Hamburg', '2023-07-09'),
(4, 'Schneider', 'Sarah', 'Dortmund', '2023-12-10'),
(5, 'Bauer', 'Lisa', 'Berlin', '2024-01-17');
sql

Im Anschluss erstellen wir die Tabelle „Bestellungen“. Diese enthält die Spalten „Bestellnummer“, „Artikelnummer“, „Kundenname“ und „Bestelldatum“. Der Code sieht so aus:

CREATE TABLE Bestellungen (
	Bestellnummer INT AUTO_INCREMENT PRIMARY KEY,
	Artikelnummer INT,
	Kundenname VARCHAR(50),
	Bestelldatum DATE
);
sql

Auch diese Tabelle füllen wir mit Beispielwerten:

INSERT INTO Bestellungen VALUES
(101, 247, 'Müller', '2024-02-20'),
(102, 332, 'Meyer', '2024-03-03'),
(103, 247, 'Hallmann', '2024-03-09'),
(104, 191, 'Schulz', '2024-03-17'),
(105, 499, 'Brandt', '2024-03-17');
sql

Nun nutzen wir INNER JOIN für MariaDB, um jene Kunden und Kundinnen auszufiltern, die in der Kundenliste auftauchen und eine Bestellung aufgegeben haben, die in der Tabelle „Bestellungen“ aufgelistet wird. Der entsprechende Code sieht so aus:

SELECT Kundenliste.Kundennummer, Kundenliste.Nachname, Bestellungen.Bestellnummer, Bestellungen.Artikelnummer
FROM Kundenliste
INNER JOIN Bestellungen
ON Kundenliste.Nachname = Bestellungen.Kundenname;
sql

Hier legen wir den Fokus auf den Nachnamen in der Kundenliste und den Kundennamen in den Bestellungen. Stimmen diese Werte überein, werden sie übernommen. Da die Kunden Meyer und Schulz in beiden Tabellen auftauchen, würde die entsprechende Ausgabe so aussehen:

Kundennummer Kundenname Bestellnummer Artikelnummer
3 Meyer 102 332
2 Schulz 104 191

LEFT OUTER JOIN

LEFT OUTER JOIN in MariaDB funktioniert nach einem ähnlichen Prinzip und verwendet auch eine fast identische Syntax. Im Gegensatz zu INNER JOIN werden in diesem Fall allerdings alle Datensätze aus der ersten oder linken Tabelle (in unserem Beispiel „Kundenliste“) ausgegeben und nur die passenden Datensätze aus der zweiten oder rechten Tabelle („Bestellungen“). Gibt es keine Entsprechung in der zweiten Tabelle, wird der entsprechende Wert mit NULL angegeben. Für unser Beispiel von oben sieht der Befehl so aus:

SELECT Kundenliste.Nachname, Bestellungen.Artikelnummer
FROM Kundenliste
LEFT OUTER JOIN Bestellungen
ON Kundenliste.Nachname = Bestellungen.Kundenname;
sql

Dadurch erhalten wir das folgende Ergebnis:

Kundenname Artikelnummer
Schmidt NULL
Schulz 191
Meyer 332
Schneider NULL
Bauer NULL

RIGHT OUTER JOIN

Genau andersherum funktioniert RIGHT OUTER JOIN in MariaDB. Dieses Mal werden die Daten der zweiten oder rechten Tabelle mit übereinstimmenden Werten der ersten oder linken Tabelle verknüpft. Gibt es keine Übereinstimmung, bleibt der Wert NULL. Dies ist der Code:

SELECT Kundenliste.Nachname, Bestellungen.Artikelnummer
FROM Kundenliste
RIGHT OUTER JOIN Bestellungen
ON Kundenliste.Nachname = Bestellungen.Kundenname;
sql

So sieht die Ausgabe aus:

Kundenname Artikelnummer
NULL 247
Meyer 332
NULL 247
Schulz 191
NULL 499
Tipp

In unserem Digital Guide erhalten Sie viele nützliche Anleitungen und Erklärungen zum Thema MariaDB. Sie finden hier zum Beispiel einen Vergleich von MariaDB und MySQL und alles zur Installation von MariaDB. Außerdem erfahren Sie, wie Sie Ihr Root-Passwort bei MariaDB zurücksetzen.