LEFT OUTER JOIN! ist diese Frage richtig?

jackisback

Erfahrenes Mitglied
Hallo,
Ich schreibe morgen eine Klausur und komme bei einer Frage nicht wirklich weiter.
Vielleicht versteht ihr diese und könnt beantworten warum sie Richtig/Falsch ist.

Frage:

Korrekte aussagen zu Left outer join sind:

1. es werden Daten aus der links stehenden Tabelle benötigt(gelesen), zu denen in der rechten Tabelle keine Datensätze verfügbar sind.

2. die Ergebnistabelle enthält auch Datensätze aus der linken Tabelle, für die es in der rechten Tabelle keine Datensätze gibt.

Die zweite aussage ist richtig aber dass die erste auch richtig ist will mir nicht einleuchten.

Warum?

MFG
jack
 
Danke für deine Antwort.

Also ich vertehe die Semantik so:
Lese links die einträge zu denen es rechts keine einträge gibt. Wenn ich jetzt links einen Eintrag finde zu dem es rechts einen einträg gibt lese ich diesen nicht vor.
 
Ich glaube ich habe mich gerade falsch ausgedrückt: bei einem Left Join werden sämtliche Datensätze der linken Tabelle genommen und falls möglich mit passenden Datensätzen der rechten Tabelle verbunden. Schau dir einfach mal das dazugehörige Mengendiagramm an.
 
Den Left outer join habe ich verstanden.
Es geht mehr um die erste aussage, ob diese richtig interpretiere oder ob du das anders verstehst und ich der Meinung bin das diese Antwort nicht richtig ist.
 
Die beiden Aussagen sind identisch. Wie schon gesagt...

Bei einem normalen JOIN (nicht OUTER, daher INNER) werden alle Datensätze der ersten Tabelle mit allen Datensätzen der zweiten Tabelle kombiniert. Nun werden alle Datensätze entfernt für welche die JOIN-Bedinungen (ON-Teil des JOINs) nicht zutreffen. Das bedeutet, dass Zeilen der ersten Tabelle verloren gehen können, wenn es keine entsprechenden Zeile in der zweiten Tabelle gibt.

Am besten überlegst du dir das immer mit einem Beispiel. Erste Tabelle "Abteilungen" zweite Tabelle "Mitarbeiter".

Aufgabe: Liste alle Abteilungen mit der Anzahl Ihrer Mitarbeiter auf (Zusatz: auch die, welche keine Mitarbeiter haben).

Mit nur einem einfachen INNER JOIN geht das nicht. Du willst ja auch Abteilungen im Ergebnis sehen, welche keine Mitarbeiter haben. Du verhinderst, dass Abteilungen "verloren" gehen indem du den OUTER JOIN nimmst. Hierbei werden dann die weiteren Spalten, die du eventuell aus der zweiten Tabelle selektierst mit NULL aufgefüllt (da ja keine Zeilen aus der zweiten Tabelle für die Zeile aus der ersten existieren) aber die Zeile geht eben nicht verloren.

Ich hoffe es ist verständlich.
 
Zurück