Basis van databases
De tabel Klant (KlantID, Naam) heeft vier rijen: (C1, Aoki), (C2, Inoue), (C3, Ueda), (C4, Eto). De tabel Bestelling (BestelID, KlantID, Bedrag) heeft vijf rijen: (O1, C1, 3000), (O2, C2, 8000), (O3, C1, 6000), (O4, C3, 2000), (O5, C2, 9000). Hoeveel rijen geeft SELECT Naam FROM Klant WHERE KlantID IN (SELECT KlantID FROM Bestelling WHERE Bedrag > 5000)?
- A1 rij
- B2 rijen
- C3 rijen
Antwoord en toelichting tonen
Antwoord: B. 2 rijen
Eerst geeft de subquery tussen haakjes de KlantID van de bestellingen met een bedrag van meer dan 5000. Dat zijn O2 (C2), O3 (C1) en O5 (C2), dus de verzameling waarden van KlantID is C2, C1, C2. De buitenste query gaat voor elke rij van de tabel Klant na of de KlantID in deze verzameling zit. Dat geldt voor Aoki (C1) en Inoue (C2), en hoewel Inoue twee keer in de verzameling voorkomt, wordt hij als één rij van de tabel Klant maar één keer teruggegeven, dus het resultaat heeft twee rijen. Drie rijen is het aantal als voor elke passende bestelling een rij zou ontstaan, zoals wanneer de tabellen Klant en Bestelling eerst worden gejoind en daarna op bedrag worden gefilterd. Eén rij is het aantal als alleen de klanten worden geteld van wie elke bestelling boven 5000 ligt (Inoue).