Daten verknüpfen
Im Abschnitt Daten abfragen haben wir gelernt, wie wir mit SELECT, WHERE, ORDER BY und Zusammenfassungsfunktionen Daten aus einer einzelnen Tabelle abfragen. Am Ende haben wir kurz den JOIN-Befehl kennengelernt.
In diesem Abschnitt werden wir Joins viel genauer anschauen. Denn in der Praxis arbeitet man fast nie mit nur einer Tabelle – und die Fähigkeit, Tabellen sinnvoll zu verknüpfen, ist eine der wichtigsten Fertigkeiten im Umgang mit Datenbanken.
Warum JOIN?
Erinnere dich an das Kernprinzip relationaler Datenbanken: Daten werden auf mehrere Tabellen aufgeteilt, um Wiederholungen zu vermeiden und die Daten sauber zu halten. Das ist gut für die Datenbank – aber was, wenn wir eine Abfrage machen wollen, die Informationen aus mehreren Tabellen braucht?
Ein konkretes Beispiel aus Strickotopia: Wir haben die Tabellen kunden und bestellungen. In der Tabelle bestellungen steht nur die kunden_id – nicht der Name des Kunden. Wir müssen also beide Tabellen zusammenbringen, um z.B. eine Liste aller Bestellungen inkl. Kundenname zu erhalten.
Genau das macht JOIN.
Das Grundprinzip
Ein JOIN verbindet zwei Tabellen über eine gemeinsame Spalte. Meistens ist das ein Fremdschlüssel auf der einen Seite und ein Primärschlüssel auf der anderen Seite.
SELECT spalten
FROM tabelle_a
JOIN tabelle_b ON tabelle_a.fremdschluessel = tabelle_b.primaerschluessel;Was passiert hier genau?
FROM tabelle_a– Starte mit der ersten TabelleJOIN tabelle_b– Verbinde sie mit der zweiten TabelleON ...– Lege fest, über welche Spalten die Verbindung hergestellt wird
Das Ergebnis ist eine neue, kombinierte Tabelle – sie existiert nur für die Dauer der Abfrage.
Schritt für Schritt: Ein erstes Beispiel
Schauen wir uns die Strickotopia-Datenbank an. Wir haben folgende Tabellen:
kunden
| id | vorname | name | land | |
|---|---|---|---|---|
| 1 | Max | Mustermann | max.muster@gmx.ch | Schweiz |
| 2 | Anna | Schmidt | anna.schmidt@schule.ch | Schweiz |
| 3 | Lukas | Weber | lukas.weber@weber.de | Deutschland |
bestellungen
| id | datum | kunde |
|---|---|---|
| 1 | 2024-01-10 | 1 |
| 2 | 2024-01-15 | 2 |
| 3 | 2024-02-03 | 1 |
Wir möchten nun eine Liste aller Bestellungen, ergänzt mit dem Namen des Kunden. Die SQL-Abfrage sieht so aus:
SELECT bestellungen.id, bestellungen.datum, kunden.vorname, kunden.name
FROM bestellungen
JOIN kunden ON bestellungen.kunde = kunden.id;Das Ergebnis:
| id | datum | vorname | name |
|---|---|---|---|
| 1 | 2024-01-10 | Max | Mustermann |
| 2 | 2024-01-15 | Anna | Schmidt |
| 3 | 2024-02-03 | Max | Mustermann |
Die Datenbank hat für jede Bestellung den passenden Kunden gesucht (anhand der kunde-Spalte in bestellungen und der id-Spalte in kunden) und die Informationen kombiniert.
Tabellenname als Präfix
Wenn Spalten in beiden Tabellen den gleichen Namen haben (z.B. id), muss man den Tabellennamen als Präfix angeben: kunden.id, bestellungen.id. Es ist generell eine gute Praxis, dies immer zu tun – so wird die Abfrage klarer und es entstehen keine Verwechslungen.
Probiere es direkt aus:
📊 Strickotopia Datenbank
Tabellen anzeigen
id (PK), vorname, name, email, strasse, plz, landid (PK), name, preis, stoff, stoffmengeid (PK), kunde (FK→kunden.id), datumbestellung (FK→bestellungen.id), produkt (FK→produkte.id), mengeAbkürzungen: Tabellen-Aliase
Bei komplexeren Abfragen werden die Tabellennamen schnell lang und unübersichtlich. Deshalb kann man Tabellen Aliase (Abkürzungen) geben:
SELECT b.id, b.datum, k.vorname, k.name
FROM bestellungen b
JOIN kunden k ON b.kunde = k.id;Mit bestellungen b und kunden k können wir statt dem vollen Namen einfach b und k schreiben. Das Ergebnis ist identisch – der Code ist aber kürzer und lesbarer.
JOIN über drei Tabellen
Oft müssen nicht nur zwei, sondern drei oder mehr Tabellen verknüpft werden. Das Prinzip bleibt gleich – man hängt einfach weitere JOIN-Befehle an.
In Strickotopia haben wir neben kunden und bestellungen auch die Tabellen bestellpositionen und produkte:
bestellpositionen
| id | bestellung | produkt | menge |
|---|---|---|---|
| 1 | 1 | 2 | 1 |
| 2 | 1 | 3 | 2 |
| 3 | 2 | 1 | 1 |
produkte
| id | name | preis |
|---|---|---|
| 1 | Wollschal | 29.90 |
| 2 | Strickmütze | 19.90 |
| 3 | Wollsocken | 14.90 |
Wir möchten nun eine vollständige Übersicht: Welcher Kunde hat welches Produkt bestellt?
SELECT k.vorname, k.name, p.name AS produkt, bp.menge
FROM bestellungen b
JOIN kunden k ON b.kunde = k.id
JOIN bestellpositionen bp ON bp.bestellung = b.id
JOIN produkte p ON bp.produkt = p.id;Das Ergebnis kombiniert Informationen aus vier Tabellen in einer einzigen Abfrage.
📊 Strickotopia Datenbank
Tabellen anzeigen
id (PK), vorname, name, email, strasse, plz, landid (PK), name, preis, stoff, stoffmengeid (PK), kunde (FK→kunden.id), datumbestellung (FK→bestellungen.id), produkt (FK→produkte.id), mengeJOIN kombiniert mit WHERE und ORDER BY
JOIN lässt sich selbstverständlich auch mit anderen Befehlen kombinieren. Die Reihenfolge ist dabei immer dieselbe:
SELECT ...
FROM ...
JOIN ... ON ...
WHERE ...
ORDER BY ...Beispiel: Alle Produkte, die von Schweizer Kunden bestellt wurden, sortiert nach Produktname:
SELECT k.vorname, k.name, p.name AS produkt
FROM bestellungen b
JOIN kunden k ON b.kunde = k.id
JOIN bestellpositionen bp ON bp.bestellung = b.id
JOIN produkte p ON bp.produkt = p.id
WHERE k.land = 'Schweiz'
ORDER BY p.name;Vom JOIN zur Analyse: Das Tor zu Big Data
Wir haben nun gelernt, wie man Daten aus mehreren Tabellen verknüpft. Das klingt vielleicht technisch, aber dahinter steckt etwas viel Grösseres.
Daten als Rohstoff
Moderne Unternehmen und Organisationen sammeln riesige Mengen an Daten:
- Ein Online-Shop: Millionen von Bestellungen, Kunden, Klicks und Suchanfragen
- Ein soziales Netzwerk: Milliarden von Posts, Likes, Freundschaften und Nachrichten
- Ein Spital: Patientendaten, Diagnosen, Medikamente, Behandlungsverläufe
- Eine Stadt: Verkehrsdaten, Energieverbrauch, Wetterdaten, Bevölkerungsstatistiken
Diese Daten haben für sich allein oft wenig Wert. Erst wenn man sie verknüpft und auswertet, entstehen nützliche Erkenntnisse.
Beispiel
Ein Online-Shop weiss, welche Produkte ein Kunde angeschaut hat (klicks), welche er gekauft hat (bestellungen) und was andere Kunden mit ähnlichem Verhalten noch gekauft haben (kunden, bestellungen). Durch das Verknüpfen dieser Tabellen entsteht die Grundlage für eine Produktempfehlung – genau das, was du auf Amazon oder im Netflix siehst.
Was ist Big Data?
Der Begriff Big Data beschreibt Datenmengen, die so gross, schnell oder vielfältig sind, dass herkömmliche Systeme damit nicht mehr umgehen können. Man spricht dabei oft von den drei "V"s:
| Begriff | Bedeutung | Beispiel |
|---|---|---|
| Volume (Menge) | Sehr grosse Datenmenge | Millionen Transaktionen täglich |
| Velocity (Geschwindigkeit) | Daten entstehen sehr schnell | Echtzeit-Börsenkurse |
| Variety (Vielfalt) | Verschiedene Arten von Daten | Text, Bilder, GPS-Daten, Sensordaten |
Von SQL zu Data Analytics
Die relationalen Datenbanken und SQL, die wir in diesem Kurs kennengelernt haben, sind die Grundlage. Aber moderne Datenanalyse geht noch weiter:
Relationale Datenbank (SQL): Strukturierte Daten in Tabellen, Abfragen mit JOIN, GROUP BY, usw. – das kennst du jetzt.
Data Warehouse: Ein spezielles System, das Daten aus vielen verschiedenen Quellen zusammenführt (z.B. aus dem Online-Shop, dem Lager und dem Kundenservice) und für Analysen optimiert.
Business Intelligence (BI): Werkzeuge, die auf den Daten aufbauen und visuelle Dashboards und Berichte erstellen – ohne dass man SQL schreiben muss.
Data Science / Machine Learning: Algorithmen lernen aus den Daten Muster – z.B. welche Kunden abwanderungsgefährdet sind oder welche Produkte sich in welcher Kombination verkaufen.
Der Weg von einer einfachen SQL-Abfrage bis hin zu einem Machine-Learning-Modell ist lang. Aber er beginnt immer gleich: mit sauber strukturierten Tabellen und der Fähigkeit, sie sinnvoll zu verknüpfen.
Die Konzepte, die du in diesem Kurs gelernt hast – Tabellen, Primärschlüssel, Fremdschlüssel, Beziehungen und SQL-Abfragen – sind dieselben, auf denen die Datensysteme von Google, Netflix, Instagram und Co. aufgebaut sind. Der Massstab ist ein anderer, das Prinzip ist dasselbe.
Do Not Track
In der interaktiven Doku-Serie Do Not Track von upian, arte, ONF und BR geht es um das geschäft mit Daten. Die Serie besteht aus sieben Episoden: