Skip to content

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.

sql
SELECT spalten
FROM tabelle_a
JOIN tabelle_b ON tabelle_a.fremdschluessel = tabelle_b.primaerschluessel;

Was passiert hier genau?

  1. FROM tabelle_a – Starte mit der ersten Tabelle
  2. JOIN tabelle_b – Verbinde sie mit der zweiten Tabelle
  3. ON ... – 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

idvornamenameemailland
1MaxMustermannmax.muster@gmx.chSchweiz
2AnnaSchmidtanna.schmidt@schule.chSchweiz
3LukasWeberlukas.weber@weber.deDeutschland

bestellungen

iddatumkunde
12024-01-101
22024-01-152
32024-02-031

Wir möchten nun eine Liste aller Bestellungen, ergänzt mit dem Namen des Kunden. Die SQL-Abfrage sieht so aus:

sql
SELECT bestellungen.id, bestellungen.datum, kunden.vorname, kunden.name
FROM bestellungen
JOIN kunden ON bestellungen.kunde = kunden.id;

Das Ergebnis:

iddatumvornamename
12024-01-10MaxMustermann
22024-01-15AnnaSchmidt
32024-02-03MaxMustermann

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
kundenid (PK), vorname, name, email, strasse, plz, land
produkteid (PK), name, preis, stoff, stoffmenge
bestellungenid (PK), kunde (FK→kunden.id), datum
bestellpositionenbestellung (FK→bestellungen.id), produkt (FK→produkte.id), menge

Abkürzungen: Tabellen-Aliase

Bei komplexeren Abfragen werden die Tabellennamen schnell lang und unübersichtlich. Deshalb kann man Tabellen Aliase (Abkürzungen) geben:

sql
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

idbestellungproduktmenge
1121
2132
3211

produkte

idnamepreis
1Wollschal29.90
2Strickmütze19.90
3Wollsocken14.90

Wir möchten nun eine vollständige Übersicht: Welcher Kunde hat welches Produkt bestellt?

sql
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
kundenid (PK), vorname, name, email, strasse, plz, land
produkteid (PK), name, preis, stoff, stoffmenge
bestellungenid (PK), kunde (FK→kunden.id), datum
bestellpositionenbestellung (FK→bestellungen.id), produkt (FK→produkte.id), menge

JOIN kombiniert mit WHERE und ORDER BY

JOIN lässt sich selbstverständlich auch mit anderen Befehlen kombinieren. Die Reihenfolge ist dabei immer dieselbe:

sql
SELECT ...
FROM ...
JOIN ... ON ...
WHERE ...
ORDER BY ...

Beispiel: Alle Produkte, die von Schweizer Kunden bestellt wurden, sortiert nach Produktname:

sql
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:

BegriffBedeutungBeispiel
Volume (Menge)Sehr grosse DatenmengeMillionen Transaktionen täglich
Velocity (Geschwindigkeit)Daten entstehen sehr schnellEchtzeit-Börsenkurse
Variety (Vielfalt)Verschiedene Arten von DatenText, 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:

  1. Relationale Datenbank (SQL): Strukturierte Daten in Tabellen, Abfragen mit JOIN, GROUP BY, usw. – das kennst du jetzt.

  2. 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.

  3. Business Intelligence (BI): Werkzeuge, die auf den Daten aufbauen und visuelle Dashboards und Berichte erstellen – ohne dass man SQL schreiben muss.

  4. 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:

Quellen

Informatik & ICT Unterricht Neufeld