Grundlagen der Datenbanken
Eine Mitarbeitertabelle (MitarbeiterNr, Name, AbteilungsID) hat 5 Zeilen mit den AbteilungsID-Werten 10, 20, 10, NULL und NULL in dieser Reihenfolge. Eine Abteilungstabelle (AbteilungsID, Abteilungsname) hat 3 Zeilen mit AbteilungsID 10, 20 und 30. Wie viele Zeilen liefert SELECT Abteilung.Abteilungsname, Mitarbeiter.Name FROM Abteilung LEFT OUTER JOIN Mitarbeiter ON Abteilung.AbteilungsID = Mitarbeiter.AbteilungsID?
- A3 Zeilen
- B4 Zeilen
- C5 Zeilen
Antwort und Erläuterung anzeigen
Antwort: B. 4 Zeilen
Ein LEFT OUTER JOIN behält jede Zeile der linken Tabelle (hier der Abteilungstabelle); hat die rechte Tabelle keine passende Zeile, entsteht eine Zeile, deren Spalten der rechten Tabelle mit NULL gefüllt sind. Abteilung 10 hat zwei Mitarbeiter und ergibt zwei Zeilen, Abteilung 20 eine Zeile, und Abteilung 30 ohne Mitarbeiter ergibt eine Zeile mit Name NULL, zusammen 4 Zeilen. Die zwei Mitarbeiter mit AbteilungsID NULL passen zu keiner Abteilung und erscheinen als Zeilen der rechten Tabelle, die nicht vollständig behalten wird, nicht im Ergebnis. Ein Inner Join würde auch die Zeile für Abteilung 30 weglassen und 3 Zeilen ergeben. Vertauscht man die Tabellen zu Mitarbeiter LEFT OUTER JOIN Abteilung, bleiben alle fünf Mitarbeiter erhalten, was 5 Zeilen ergibt. Bei Outer Joins ist es wichtig zu prüfen, welche Tabelle alle ihre Zeilen behält.