Grundlagen der Datenbanken
Spalte x der Tabelle R hat 4 Zeilen mit den Werten 1, 1, 2, 3, und Spalte x der Tabelle S hat 4 Zeilen mit den Werten 1, 1, 2, 4. Wie viele Zeilen liefert SELECT * FROM R INNER JOIN S ON R.x = S.x?
- A2 Zeilen
- B3 Zeilen
- C5 Zeilen
Antwort und Erläuterung anzeigen
Antwort: C. 5 Zeilen
Bei einem Join wird jede Kombination von Zeilen, die die Bedingung erfüllt, zu einer Ergebniszeile. Für x = 1 erfüllt jede Kombination der zwei Zeilen von R mit den zwei Zeilen von S die Bedingung, das ergibt 2 × 2 = 4 Zeilen; für x = 2 ist es 1 × 1 = 1 Zeile. Die 3 von R und die 4 von S haben keinen Partner und erscheinen im Inner Join nicht. Insgesamt sind es 4 + 1 = 5 Zeilen. 2 Zeilen wäre die Anzahl, wenn pro übereinstimmendem Wert (1 und 2) nur eine Zeile entstünde. 3 Zeilen wäre die Anzahl, wenn man für jede Zeile von R nur prüft, ob S einen passenden Wert enthält (eine Abfrage wie SELECT * FROM R WHERE x IN (SELECT x FROM S)). Das kartesische Produkt ohne Bedingung hätte 4 × 4 = 16 Zeilen. Zu beachten ist, dass sich bei doppelten Werten in der Join-Spalte die Zahl der Ergebniszeilen multipliziert.