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;
sqlMit 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.
- IONOS Cloud-Partner: Die Experten für Ihren Datenbank-Betrieb
- Flexibel: Maßgeschneiderte Datenbank-Lösungen ganz auf Ihre Bedürfnisse
- Rechenzentren in Deutschland: Ihre Daten sind sicher
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
);
sqlDiese 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');
sqlIm 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
);
sqlAuch 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');
sqlNun 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;
sqlHier 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;
sqlDadurch 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;
sqlSo sieht die Ausgabe aus:
Kundenname | Artikelnummer |
---|---|
NULL | 247 |
Meyer | 332 |
NULL | 247 |
Schulz | 191 |
NULL | 499 |
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.