Ilja: Left Join Abfrage ? Oder warum geht es auch ohne ?

Beitrag lesen

Yo,

man unterscheidet die art der joins. deine select abfrage ist ein sogenannter "inner join" (equi, natural). Joins haben zu eigen, dass sie immer über mehr als eine tabelle gehen und somit beziehungen abbilden können, zum beispiel 1:n (Ein vater kann mehrere Kinder haben, aber in der Regel hat ein kind nur einen vater). solch eine beziehung der natürlichen vermehrung lassen sich eben über zwei tabellen darstellen. in der einen stehen die männer und in der anderen die kindern. in der kindtabelle würde dann der fremd oder bezugsschlüssel stehen, um festzulegen, wer der Vater des jeweiligen kind ist.

nun gibt es neben dem gemeinen klapperstorch (in wahrheit der datenbank-administrator), der die kinder einfach vertauscht noch andere probleme, die sich mit einem inner join nicht lösen lassen. damit kannst du zwar alle väter mit ihren kindern auflisten, aber die männer, die noch gar keine kinder haben, fallen unter dem tisch, da ja niemals der primär und der fremdschlüssel bei ihnen gleich sind (siehe gleichheitszeichen).

dafür gibt es einen outer join (left oder right). Der left join macht nun folgendes. er nimmt alle datensätze --> männer aus der linken tabelle, egal ob sie nun ein kind haben oder nicht. hat er kinder in der anderen tabelle, werden diese aufgelistet, anderfals bleibt diese spalte einfach leer. aber du hast auf jeden fall alle männer an board.

Ilja