SQL Left Join

mosquito87

Lieutenant
Registriert
Aug. 2006
Beiträge
980
Hi Jungs und Mädels,

ich vertiefe gerade mein SQL Wissen und bleib grad mein 'Left Join' hängen.

Es gibt folgende Tabellen:
1) 'Abteilung' mit "abtnr" und "abteilungsname"
2) 'Mitarbeiter' mit 'manr', 'name', 'vorname', 'abtnr'

PHP:
SELECT abteilung.abtnr, name, vorname FROM abteilung LEFT JOIN mitarbeiter
ON abteilung.abtnr=mitarbeiter.abtnr

'FROM abteilung LEFT JOIN mitarbeiter'- das heißt ja: "Das abteilung.abtnr steht in der Tabelle abteilung und alles was danach kommt in der Tabelle 'Mitarbeiter'.
Richtig?
Was ich nicht verstehe:
"ON abteilung.abtnr=mitarbeiter.abtnr ...

Hat da jemand eine Erklärung für mich?

Edit: Ok, hat sich erledigt. Das heißt, dass einfach nur das ausgegeben wird, wo die abtnr aus der Tabelle 'Mitarbeiter' mit der aus Tabelle 'Abteilung' übereinstimmt, richtig?
 
Zuletzt bearbeitet:
Das "ON" gibt an, über welche Felder die beiden Tabellen verbunden verwenden sollen.

Du bekommst alle Einträge aus der Tabelle "abteilung".

Sofern für einen Eintrag aus "abteilung" über den Key "abtnr" mit keinem Eintrag in der Tabelle 'Mitarbeiter' übereinstimmt sind name und vorname NULL.

Sofern für einen Eintrag aus "abteilung" über den Key "abtnr" mit einem Eintrag in der Tabelle 'Mitarbeiter' übereinstimmt sind name und vorname gefüllt mit den passenden Daten

Sofern für einen Eintrag aus "abteilung" über den Key "abtnr" mit zwei oder mehreren Einträgen in der Tabelle 'Mitarbeiter' übereinstimmt wirst du die Ausgabezeile aus 'Abteilung' so oft sehen wie es Einträge in der Tabelle 'Mitarbeiter' gibt.

Sollte zumindest so sein.
 
Ich würde sagen probier einmal was rauskommt, wenn du einen inner join einsetzt. Das ist nämlich der Standard (oft auch nur join genannt). Left join bzw. right join ist eher ein Sonderfall, dem man manchmal braucht.
 
Zurück
Oben