CodeGym /Kurse /SQL SELF /Einführung in das Verbinden von Daten: JOIN

Einführung in das Verbinden von Daten: JOIN

SQL SELF
Level 11, Lektion 0
Verfügbar

Heute kommen wir zu einem der spannendsten Themen beim Arbeiten mit relationalen Datenbanken – das Zusammenführen von Daten aus mehreren Tabellen mit JOIN. Das ist ein mächtiges Tool, das dir die Tür zu komplexen Beziehungen und Analysen öffnet.

Stell dir vor, deine Datenbank ist ein riesiger Comic, in dem jede einzelne Tabelle ein eigenes Panel ist. Um die ganze Story zu bekommen, musst du diese Panels verbinden. Genau dabei hilft dir JOIN. Daten verbinden heißt, dass eine Abfrage Infos aus mehreren Tabellen holt und sie anhand bestimmter Bedingungen zusammenbringt.

Relationale Datenbanken basieren auf dem Konzept von Beziehungen zwischen Tabellen. Jede Tabelle speichert Infos über eine bestimmte Entität, und für ein vollständiges Bild wollen wir oft Daten aus verschiedenen Tabellen verbinden. Zum Beispiel:

  • Die Tabelle students enthält eine Liste von Studierenden.
  • Die Tabelle courses speichert eine Liste von Kursen.
  • Die Tabelle enrollments zeigt, wer welche Kurse besucht.

Um herauszufinden, welcher Student in welchem Kurs ist, müssen wir diese Tabellen verbinden. Bei Bewerbungsgesprächen wirkt ein Entwickler, der mit JOIN umgehen kann, direkt viel professioneller – das ist einer der gefragtesten Skills im Datenbereich.

Die wichtigsten Join-Arten

In PostgreSQL gibt es verschiedene Arten von JOIN, und jede ist für bestimmte Aufgaben gedacht. Wir schauen sie uns erstmal allgemein an, damit du nicht gleich mit komplizierten Beispielen überfordert bist:

Typ JOIN Beschreibung
INNER JOIN Gibt Zeilen zurück, die in beiden Tabellen übereinstimmen.
LEFT JOIN Gibt alle Zeilen aus der linken Tabelle zurück, und aus der rechten nur die passenden.
RIGHT JOIN Gibt alle Zeilen aus der rechten Tabelle zurück, und aus der linken nur die passenden.
FULL OUTER JOIN Gibt alle Zeilen aus beiden Tabellen zurück und füllt NULL für fehlende Übereinstimmungen.

Welche JOIN-Art du nimmst, hängt von deiner Aufgabe ab:

  • Wenn du nur die passenden Daten aus beiden Tabellen brauchst, nimm INNER JOIN.
  • Wenn du alle Daten aus einer Tabelle behalten willst und aus der anderen nur die passenden, sind LEFT JOIN oder RIGHT JOIN das Richtige.
  • Wenn du alle Daten aus beiden Tabellen willst, auch wenn sie nicht zusammenpassen, nimm FULL OUTER JOIN.

Lass uns diese Joins direkt in der Praxis anschauen.

Beispielaufgabe – "Wer ist in welchem Kurs?"

Angenommen, wir haben drei Tabellen:

Tabelle students

id name
1 Otto
2 Anna
3 Peter

Tabelle courses

id title
101 Mathematik
102 Englisch

Tabelle enrollments

student_id course_id
1 101
2 102

Diese Tabellen sind so miteinander verbunden:

  • Das Feld id in students ist die eindeutige ID des Studenten.
  • Das Feld id in courses ist die eindeutige ID des Kurses.
  • In der Tabelle enrollments verbinden die Spalten student_id und course_id Studenten und Kurse.

Angenommen, wir wollen wissen: Welcher Student ist in welchem Kurs eingeschrieben?

Die Antwort bekommen wir mit JOIN. Wir verbinden die Tabellen anhand ihrer Beziehungen:

  • Wir verbinden students und enrollments über id = student_id.
  • Wir verbinden enrollments und courses über course_id = id.

So sieht die SQL-Abfrage aus:

SELECT students.name, courses.title
FROM enrollments
JOIN students ON enrollments.student_id = students.id
JOIN courses ON enrollments.course_id = courses.id;

Was macht diese Abfrage:

  • FROM enrollments – wir starten mit der Tabelle, die Studenten und Kurse verbindet.
  • JOIN students ON enrollments.student_id = students.id – wir holen die Studenten dazu, um ihre Namen zu bekommen.
  • JOIN courses ON enrollments.course_id = courses.id – wir holen die Kurse dazu, um die Titel zu bekommen.

Das Ergebnis sieht so aus:

name title
Otto Mathematik
Anna Englisch

Achte darauf: Wenn ein Student keinen Kurs hat, taucht er im Ergebnis nicht auf – weil JOIN standardmäßig streng ist (INNER JOIN). Später schauen wir uns an, wie man mit LEFT JOIN auch solche Studenten einbezieht.

Falls dir bei so einer Abfrage noch was unklar ist – kein Stress! Schritt für Schritt klären wir das in den nächsten Vorlesungen!

Wofür braucht man das im echten Leben?

Jetzt, wo du weißt, wie man Tabellen verbindet, lass uns mal über die echte Welt reden. Hast du dich schon mal gefragt, wie ein Online-Shop funktioniert? Zum Beispiel, wenn du ein Smartphone auswählst und die Bewertungen anderer User siehst.

  1. Die Tabelle products enthält Infos zu Produkten.
  2. Die Tabelle reviews enthält Bewertungen von Kunden.
  3. Die Tabelle customers enthält Infos zu den Kunden selbst.

Um auf der Website die Bewertungen anzuzeigen, muss man die Tabellen products, reviews und customers verbinden. Das ist JOIN in Aktion.

Worauf solltest du achten?

Bevor wir in den nächsten Vorlesungen tiefer in JOIN einsteigen, hier ein paar Dinge, die du dir merken solltest:

  1. Die Reihenfolge beim JOIN ist wichtig. Zum Beispiel gibt LEFT JOIN Zeilen aus der linken Tabelle zurück – wenn du die Reihenfolge änderst, ändert sich auch das Ergebnis.
  2. Arbeite mit kleinen Tabellen. Am Anfang solltest du keine Abfragen auf Millionen von Zeilen machen. Denk dran: Auch die einfachste Abfrage sollte verständlich sein.
  3. Gewöhn dich an Beziehungen zu denken. Wenn du Tabellen als Teile einer großen Struktur siehst, wird das Arbeiten mit JOIN ganz natürlich.

Ab heute fangen wir an, echte SQL-Pros zu werden. In der nächsten Vorlesung lernst du, wie man INNER JOIN nutzt, um Daten aus zwei Tabellen zu holen. Das wird ein großer Schritt auf deinem Weg mit PostgreSQL.

2
Aufgabe
SQL SELF, Level 11, Lektion 0
Gesperrt
Verwendung von COALESCE zur Behandlung von NULL in Zeichenketten
Verwendung von COALESCE zur Behandlung von NULL in Zeichenketten
2
Aufgabe
SQL SELF, Level 11, Lektion 0
Gesperrt
Berechnung des Durchschnittspreises mit Bedingung und Behandlung von NULL
Berechnung des Durchschnittspreises mit Bedingung und Behandlung von NULL
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION