yo,
Ich finde einfach nirgends eine ausführliche Erklärung/Aufstellung von Erklärungen,
was ein JOIN macht
ein JOIN ist quasi eine verbindung von zwei tabellen. wird nicht weiter mit angegeben, wie sie miteinander verbunden werden sollen, wird ein sogenannter kreuz-join ausgeführt, sprich jeder datensatz der einen tabelle wird mit jedem datensatz der anderen tabelle verbunden. bei 100 datensätzen in der ersten tabelle und 50 datensätze in der zweiten tabelle würden dabei 100 * 50 = 5000 datensätze rauskommen.
was ein ON macht
leitet meines wissen unter mysql die bedingung eines joins ein, da man in aller regel eher selten einen kreuz-join ausführen will. es ist quasi ein "hilfswort" wie FROM oder WHERE.
was ein INNER JOIN macht
wie gesagt, nur selten will man einen kreuz-join. und dabei unterscheidet man, welche art von join man ausführen will. der inner join ist dadurch spezifiziert, dass die join bedingung immer erfüllt sein muss, damit der datensatz in die ergebnismenge aufgenommen wird. beispiel, bein einem artikel steht ein ländercode dabei. in einer anderen tabelle steht nun der klartext des landes zu jedem entsprechenden ländercode. jeder ländercode in der artikeltabelle trifft auf einen entsprechenden ländercode in der länder tabelle. das wäre ein typischer inner join.
was ein LEFT JOIN macht
es gibt aber auch datensätze, da will man auf jeden fall, dass der datensatz aus der "ersten" tabelle genommen wird, egal ob es einen entsprechendenen gegenpart in der zweiten tabele gibt oder nicht. wenn es ihn gibt, zeig ihn mit an, wenn nicht, nimm den datensatz trotzdem und fülle die entsprechenden werte der zweiten tabelle mit NULL auf. als beispiel gebe ich hier immer die mitarbeiter an, wo auch deren kinder mit angezeigt werden sollen. es sollen auf jeden fall alle mitarbeiter angeziegt werden und wenn sie kinder haben, dann auch diese. bei einem inner join würden aber die mitarbeiter ohne kinder einfach wegfallen, was aber nicht gewünscht ist.
Ilja