Block R — Subqueries: Abfragen innerhalb von Abfragen. IN, NOT IN, EXISTS, NOT EXISTS und skalare Subqueries.
Block S — Shop-Übungen: Eine neue Datenbank, keine Erklärungen — nur Aufgaben. Querbeet, mittelschwer bis komplex. Festigung des gesamten Stoffs.
Schueler · Buch · Ausleihe · Ausleihposition — wie in Modul 05.
7 Tabellen: Kunde, Kategorie, Artikel, Lieferant, ArtikelLieferant, Bestellung, Bestellposition.
Eine Subquery ist eine SELECT-Anweisung innerhalb einer anderen. Sie steht in Klammern und liefert entweder eine Liste von Werten (für IN/NOT IN) oder einen einzelnen Wert (skalare Subquery).
Vorteil gegenüber JOIN: manchmal lesbarer, besonders bei NOT IN und EXISTS.
Welche Schüler haben mindestens eine Ausleihe?
Welche Bücher wurden schon mindestens einmal ausgeliehen? Zeige Titel und Genre.
Welche Schüler haben das Buch „Tschick" ausgeliehen? Zeige Name und Klasse.
NOT IN kehrt das Ergebnis um — es werden nur Zeilen angezeigt, die nicht in der Subquery-Liste vorkommen. Entspricht dem LEFT JOIN + IS NULL Muster aus Block O.
⚠ Achtung: Wenn die Subquery NULL-Werte liefert, gibt NOT IN keine Ergebnisse zurück. Bei möglichen NULLs besser NOT EXISTS verwenden.
Welche Bücher wurden nie ausgeliehen?
Welche Schüler haben noch nie etwas ausgeliehen? Zeige Name und Klasse.
Welche Bücher aus dem Genre „Fantasy" wurden noch nie ausgeliehen?
Bei EXISTS wird die Subquery für jede Zeile der äußeren Abfrage neu ausgeführt — sie kann auf die äußere Tabelle zugreifen. Das nennt man korrelierte Subquery.
SELECT 1 — der Rückgabewert ist egal, nur ob Zeilen existieren zählt. NOT EXISTS kehrt das Ergebnis um.
Welche Schüler haben aktuell ein Buch ausgeliehen (noch nicht zurück)?
Welche Bücher sind aktuell ausgeliehen (in einer offenen Ausleihe, DatumRueckgabe IS NULL)? Zeige Titel und Genre.
Welche Schüler haben kein Buch aktuell ausgeliehen? Zeige Name und Klasse.
Eine skalare Subquery liefert genau einen Wert — z.B. einen Durchschnitt — der dann als Vergleichswert in WHERE verwendet wird.
Welche Bücher kosten mehr als der Durchschnittspreis aller Bücher? Zeige Titel und Preis, teuerste zuerst.
Keine Erklärungen, keine Beispiele — nur Aufgaben. Nutze das Schema und dein gesamtes SQL-Wissen. Hinweise kosten −5 XP.
| KundeID | INTEGER · PK |
| Name | TEXT |
| Strasse | TEXT |
| PLZ | TEXT |
| Stadt | TEXT |
| KategorieID | INTEGER · PK |
| Bezeichnung | TEXT |
| ArtikelID | INTEGER · PK |
| Bezeichnung | TEXT |
| Preis | REAL |
| KategorieID | INTEGER · FK |
| LieferantID | INTEGER · PK |
| Name | TEXT |
| Strasse | TEXT |
| PLZ | TEXT |
| Stadt | TEXT |
| ArtikelID | INTEGER · FK |
| LieferantID | INTEGER · FK |
| BestellungID | INTEGER · PK |
| KundeID | INTEGER · FK |
| Datum | DATE |
| PositionID | INTEGER · PK |
| BestellungID | INTEGER · FK |
| ArtikelID | INTEGER · FK |
| Anzahl | INTEGER |
Welche Artikel gehören zur Kategorie „Elektronik"? Zeige Bezeichnung und Preis.
Welche Kunden haben noch keine Bestellung aufgegeben? Zeige Name und Stadt.
Wie viele Bestellungen hat jeder Kunde aufgegeben? Auch Kunden mit 0 Bestellungen anzeigen. Meiste zuerst.
Welche Artikel wurden noch nie bestellt?
Wie viel hat jede Bestellung insgesamt gekostet? Berechne die Summe aus Anzahl × Preis pro Position. Zeige BestellungID und Gesamtbetrag, teuerste zuerst.
Welche Kategorien haben einen Durchschnittspreis über 50 €? Zeige Bezeichnung und Durchschnitt.
Welche Kunden haben mehr als 2 verschiedene Artikel bestellt (gezählt über alle Bestellungen)?
Welche Artikel kosten mehr als der Durchschnittspreis ihrer eigenen Kategorie? Zeige Bezeichnung, Preis und Kategorie.
Welche Lieferanten liefern ausschließlich Artikel aus einer einzigen Kategorie? Zeige Lieferantenname und die Kategorie.
Welche Kunden haben im Jahr 2025 für mehr als 200 € bestellt (Summe über alle ihre 2025-Bestellungen)?
Umsatz pro Kunde über alle Bestellungen. Nur Kunden mit Gesamtumsatz über 100 € anzeigen. Höchster Umsatz zuerst.
Umsatz pro Kategorie über alle Bestellungen. Welche Kategorie hat den höchsten Gesamtumsatz? Alle Kategorien anzeigen, höchste zuerst.
Welche Artikel aus der Kategorie „Elektronik" wurden insgesamt mehr als 3 Mal bestellt (Anzahl summiert über alle Bestellungen)?
Welche Kunden haben im Jahr 2025 mindestens eine Bestellung aufgegeben, aber keinen Artikel aus der Kategorie „Lebensmittel" bestellt?
Welche Lieferanten liefern Artikel, die zusammen einen Gesamtumsatz über 500 € erzielt haben? Zeige Lieferantenname und Umsatz.
Abschluss der SQL-Reihe für Klasse 12. Dein Ergebnis:
R · SUBQUERIES
S · SHOP
SQL-Reihe Klasse 9 + 12 abgeschlossen ✓