Basis van databases
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?
- A2 rijen
- B3 rijen
- C5 rijen
Antwoord en toelichting tonen
Antwoord: C. 5 rijen
Bij een join wordt elke combinatie van rijen die aan de voorwaarde voldoet één resultaatrij. Voor x = 1 voldoet elke combinatie van de twee rijen van R en de twee rijen van S aan de voorwaarde, wat 2 × 2 = 4 rijen geeft; voor x = 2 is er 1 × 1 = 1 rij. De 3 van R en de 4 van S hebben geen partner en verschijnen dus niet in de inner join. Het totaal is 4 + 1 = 5 rijen. Twee rijen is het aantal als per overeenkomende waarde (1 en 2) maar één rij zou ontstaan. Drie rijen is het aantal als voor elke rij van R alleen wordt nagegaan of S een overeenkomende waarde bevat (een query zoals SELECT * FROM R WHERE x IN (SELECT x FROM S)). Het cartesisch product zonder voorwaarde zou 4 × 4 = 16 rijen geven. Houd er rekening mee dat dubbele waarden in de joinkolom het aantal resultaatrijen vermenigvuldigen.