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) |