Bisher haben wir gelernt, Tabellen zu erstellen, zu verknüpfen und einfache CRUD-Operationen durchzuführen.
In diesem Kapitel gehen wir einen Schritt weiter: Wir kombinieren Tabellen mit JOINs, fassen Daten mit
GROUP BY zusammen und nutzen
Aggregatfunktionen wie
COUNT(),
SUM(),
AVG().
🔹 JOIN – Daten aus mehreren Tabellen kombinieren
Beispiel 1: Kunden mit ihren Bestellungen
SELECT k.vorname, k.nachname, b.produkt, b.preis, b.bestelldatum
FROM kunden k
JOIN bestellungen b ON k.id = b.kunde_id;
Beispiel 2: Kunden ohne Bestellungen (LEFT JOIN)
SELECT k.vorname, k.nachname, b.produkt
FROM kunden k
LEFT JOIN bestellungen b ON k.id = b.kunde_id;
👉 Hinweis: Alle Kunden werden angezeigt, auch die ohne Bestellungen (dann sind Bestellwerte
NULL).
SELECT k.vorname, k.nachname, p.name AS produkt, p.preis
FROM kunden k
JOIN kunden_produkte kp ON k.id = kp.kunde_id
JOIN produkte p ON kp.produkt_id = p.id;
Beispiel 3: Produkte eines Kunden (n:m über Zwischentabelle)
SELECT k.vorname, k.nachname, p.name AS produkt, p.preis
FROM kunden k
JOIN kunden_produkte kp ON k.id = kp.kunde_id
JOIN produkte p ON kp.produkt_id = p.id;
🔹 GROUP BY – Daten zusammenfassen
Beispiel 1: Anzahl der Bestellungen pro Kunde
SELECT k.vorname, k.nachname, COUNT(b.id) AS anzahl_bestellungen
FROM kunden k
LEFT JOIN bestellungen b ON k.id = b.kunde_id
GROUP BY k.id;
Beispiel 2: Gesamtausgaben pro Kunde
SELECT k.vorname, k.nachname, SUM(b.preis) AS gesamt_ausgaben
FROM kunden k
JOIN bestellungen b ON k.id = b.kunde_id
GROUP BY k.id;
Beispiel 3: Durchschnittspreis pro Produkt
SELECT p.name, AVG(b.preis) AS durchschnitt_preis
FROM produkte p
JOIN kunden_produkte kp ON p.id = kp.produkt_id
JOIN bestellungen b ON b.produkt = p.name
GROUP BY p.id;
🔹 HAVING – Bedingungen auf Gruppen anwenden
HAVING ist wie
WHERE, nur für Gruppenergebnisse.
Beispiel: Nur Kunden anzeigen, die mehr als eine Bestellung haben.
SELECT k.vorname, k.nachname, COUNT(b.id) AS anzahl
FROM kunden k
JOIN bestellungen b ON k.id = b.kunde_id
GROUP BY k.id
HAVING COUNT(b.id) > 1;
🔹 Subqueries – Abfragen in Abfragen
Beispiel: Kunden mit Bestellungen über 50 €
SELECT vorname, nachname
FROM kunden
WHERE id IN (
SELECT kunde_id FROM bestellungen WHERE preis > 50
);
🔹 Übung
- Liste alle Kunden mit der Anzahl ihrer Bestellungen.
- Berechne die Gesamtausgaben je Kunde.
- Finde alle Kunden, die keine Bestellungen haben.
- Erstelle eine Abfrage, die alle Produkte auflistet, die von mehr als einem Kunden gekauft wurden.
✅ Zusammenfassung
- JOIN verbindet Tabellen (INNER, LEFT, RIGHT).
- GROUP BY fasst Daten zusammen (z. B. pro Kunde).
- Aggregatfunktionen wie
COUNT, SUM, AVG liefern Statistiken.
- HAVING filtert Gruppenergebnisse.
- Subqueries erlauben verschachtelte Abfragen.
📚 Inhaltsverzeichnis
👉
MariaDB Kapitel 1: Einführung & Installation im Terminal
👉
MariaDB Kapitel 2: Benutzer & Rechteverwaltung
👉
MariaDB Kapitel 3: Tabellen sauber anlegen (Primär- & Fremdschlüssel)
👉
MariaDB Kapitel 4: Grundbefehle & Kurzschreibweisen in der MariaDB-Konsole
👉
MariaDB Kapitel 5: CRUD-Befehle – Daten einfügen, lesen, ändern und löschen
👉
MariaDB Kapitel 6: Primär- und Fremdschlüssel – Tabellen verknüpfen
👉
MariaDB Kapitel 7: Profi-Abfragen mit JOIN, GROUP BY & Aggregatfunktionen
👉
MariaDB Kapitel 8: Indexe, Views & Transaktionen
👉
MariaDB Kapitel 9: Produktivbetrieb – Sicherheit, Backups & Verwaltung
👉
MariaDB Kapitel 10: Abschlussprojekt – Ein Mini-Shop
⭐ Bonus-Kapitel Ideen
👉
MariaDB Kapitel 11: Stored Procedures – Automatisierte Abläufe
👉
MariaDB Kapitel 12: Trigger – Aktionen bei Änderungen
👉
MariaDB Kapitel 13: Events – Zeitgesteuerte Aufgaben
👉
MariaDB Kapitel 14: Sicherheit & Best Practices
👉
MariaDB Kapitel 15: Performance-Tuning & Optimierung