Basis van databases
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?
- A3 rijen
- B4 rijen
- C5 rijen
Antwoord en toelichting tonen
Antwoord: B. 4 rijen
Een LEFT OUTER JOIN behoudt elke rij van de linkertabel (hier de tabel Afdeling); als de rechtertabel geen passende rij heeft, levert ze één rij op waarin de kolommen van de rechtertabel met NULL zijn gevuld. Afdeling 10 heeft twee medewerkers en geeft twee rijen, afdeling 20 geeft één rij, en afdeling 30, die geen medewerkers heeft, geeft één rij met NULL als naam, samen vier rijen. De twee medewerkers met AfdelingID NULL passen bij geen enkele afdeling en verschijnen, als rijen van de rechtertabel die niet volledig wordt behouden, niet in het resultaat. Een inner join zou ook de rij van afdeling 30 laten vallen en drie rijen geven. Worden de tabellen omgewisseld tot Medewerker LEFT OUTER JOIN Afdeling, dan blijven alle vijf medewerkers behouden en zijn het vijf rijen. Bij outer joins is het belangrijk na te gaan van welke tabel alle rijen behouden blijven.