Grundlagen der Datenbanken
Eine Kundentabelle (KundenID, Name) hat 4 Zeilen: (C1, Aoki), (C2, Inoue), (C3, Ueda), (C4, Eto). Eine Bestelltabelle (BestellID, KundenID, Betrag) hat 5 Zeilen: (O1, C1, 3000), (O2, C2, 8000), (O3, C1, 6000), (O4, C3, 2000), (O5, C2, 9000). Wie viele Zeilen liefert SELECT Name FROM Kunde WHERE KundenID IN (SELECT KundenID FROM Bestellung WHERE Betrag > 5000)?
- A1 Zeile
- B2 Zeilen
- C3 Zeilen
Antwort und Erläuterung anzeigen
Antwort: B. 2 Zeilen
Zuerst liefert die Unterabfrage (Subquery) in Klammern die KundenID der Bestellungen mit einem Betrag über 5000. Das sind O2 (C2), O3 (C1) und O5 (C2), die Menge der KundenID-Werte ist also C2, C1, C2. Die äußere Abfrage prüft für jede Zeile der Kundentabelle, ob deren KundenID in dieser Menge enthalten ist. Das trifft auf Aoki (C1) und Inoue (C2) zu; Inoue kommt in der Menge zwar zweimal vor, wird aber als eine Zeile der Kundentabelle nur einmal geliefert, das Ergebnis hat also 2 Zeilen. 3 Zeilen wäre die Anzahl, wenn für jede passende Bestellung eine Zeile entstünde, etwa wenn Kunden- und Bestelltabelle verbunden und dann nach Betrag gefiltert werden. 1 Zeile wäre die Anzahl, wenn man nur Kunden zählt, deren sämtliche Bestellungen über 5000 liegen (Inoue).