Basis van databases

De tabel Medewerker (MedewerkerNr, Naam, AfdelingID) heeft vier rijen met als waarden voor AfdelingID achtereenvolgens 10, 20, 10 en NULL. De tabel Afdeling (AfdelingID, Afdelingsnaam) heeft drie rijen met AfdelingID 10, 20 en 30. Hoeveel rijen geeft SELECT Medewerker.Naam, Afdeling.Afdelingsnaam FROM Medewerker INNER JOIN Afdeling ON Medewerker.AfdelingID = Afdeling.AfdelingID?

  1. A3 rijen
  2. B4 rijen
  3. C12 rijen
Antwoord en toelichting tonen

Antwoord: A. 3 rijen

Een INNER JOIN geeft alleen de combinaties van rijen terug die aan de ON-voorwaarde voldoen. De twee medewerkers met AfdelingID 10 worden gecombineerd met afdeling 10, en de ene medewerker met AfdelingID 20 met afdeling 20, dus het resultaat heeft drie rijen. De medewerker met AfdelingID NULL wordt aan geen enkele afdeling gekoppeld, omdat een vergelijking met NULL nooit waar is, en verdwijnt uit het resultaat. Ook afdeling 30, die geen medewerkers heeft, verschijnt niet. Vier rijen is het aantal bij een left outer join die elke rij van de tabel Medewerker behoudt (Medewerker LEFT OUTER JOIN Afdeling). Twaalf rijen is de CROSS JOIN (het cartesisch product), die zonder voorwaarde elke combinatie vormt: 4 × 3 = 12 rijen.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van databases

  1. De tabel Medewerker (MedewerkerNr, Naam, AfdelingID) heeft vijf rijen met als waarden voor AfdelingID achtereenvolgens 10, 20, 10, NULL en NULL. De tabel Afdeling (AfdelingID, Afdelingsnaam) heeft drie rijen met AfdelingID 10, 20 en 30. Hoeveel rijen geeft SELECT Afdeling.Afdelingsnaam, Medewerker.Naam FROM Afdeling LEFT OUTER JOIN Medewerker ON Afdeling.AfdelingID = Medewerker.AfdelingID?
  2. Kolom x van tabel R heeft vier rijen met de waarden 1, 1, 2, 3, en kolom x van tabel S heeft vier rijen met de waarden 1, 1, 2, 4. Hoeveel rijen geeft SELECT * FROM R INNER JOIN S ON R.x = S.x?
  3. 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)?
  4. Uit de tabel Klant (KlantID, Naam) en de tabel Bestelling (BestelID, KlantID, Bedrag) moeten de namen worden opgevraagd van klanten die nog nooit iets hebben besteld. Welk SQL-statement is juist?
  5. Welke beschrijving van een view in een relationele database is juist?