Beispielszenario
Schüler besuchen Praktikumsbetriebe (1:n-Beziehung):
Tabelle Schueler
s_id | name | b_id# |
---|---|---|
1 | Jonas | 101 |
2 | Aylin | 102 |
3 | Leon | 103 |
Tabelle Betrieb
b_id | name |
---|---|
101 | IT Solutions |
102 | Autohaus Müller |
103 | Bäckerei Lenz |
Was ist ein JOIN?
Ein JOIN verbindet Datensätze aus mehreren Tabellen, um Informationen zu kombinieren – z. B. Schüler mit ihren Praktikumsbetrieben.
Die Verbindung erfolgt über Primär- und Fremdschlüssel. Dabei gibt es verschiedene Varianten:
🔗 Variante 1: JOIN (empfohlen bei Beziehungen)
SELECT s.name, b.name AS betrieb
FROM Schueler s
JOIN Betrieb b ON s.b_id = b.b_id;
✅ Ergebnis: Zeigt alle Schüler mit dem Namen ihres Praktikumsbetriebs.
📝 Erklärung:
- Der JOIN verknüpft die Tabellen Schueler und Betrieb.
- Die Verbindung erfolgt über den Fremdschlüssel b_id.
- Nur Schüler mit gültigem Betriebsbezug werden angezeigt.
🔄 Variante 2: WHERE-Vergleich (klassisch, aber veraltet)
SELECT s.name, b.name AS betrieb
FROM Schueler s, Betrieb b
WHERE s.b_id = b.b_id;
📝 Erklärung:
- Ähnliche Funktion wie der JOIN.
- Technisch korrekt, aber weniger modern.
- Empfehlung: Stattdessen JOIN ... ON verwenden.
🔍 Variante 3: Subquery in SELECT
SELECT s.name,
(SELECT name FROM Betrieb WHERE b_id = s.b_id) AS betrieb
FROM Schueler s;
📝 Erklärung:
- Für jede Zeile wird der passende Betrieb über eine Unterabfrage ermittelt.
- Vorteil: keine zweite Tabelle im FROM.
- Nachteil: schlechtere Performance bei vielen Datensätzen.
➕ Variante 4: Subquery in WHERE-Klausel
SELECT name
FROM Schueler
WHERE b_id = (
SELECT b_id
FROM Betrieb
WHERE name = 'IT Solutions'
);
✅ Ergebnis: Zeigt alle Schüler, die im Betrieb „IT Solutions“ ihr Praktikum machen.
📝 Erklärung:
- Die innere Abfrage liefert die b_id von „IT Solutions“.
- Die äußere Abfrage zeigt alle Schüler mit dieser b_id.
🧠 JOIN vs. Subquery – Wann was?
Ziel | Empfehlung |
---|---|
Daten aus mehreren Tabellen kombinieren | JOIN |
Einzelne Werte aus einer anderen Tabelle anzeigen | Subquery (SELECT) |
Klarheit und gute Performance | JOIN |
Schnelle Lösung für einfache Anforderungen | Subquery |
Selektion auf Grundlage eines Werts aus einer anderen Tabelle | Subquery (WHERE) |