trinita: mySQL: LEFT JOIN oder INNER JOIN ?

Hallo !

Könnte mir jemand auf leicht verständliche Weise den Unterschied zwischen LEFT JOIN und INNER JOIN bei mySQL erklären ?

Die entsprechenden Passagen im mySQL-Handbuch geben da m.E. nicht besonders viel her ...

Danke,
Trinita

  1. Hallo!

    Könnte mir jemand auf leicht verständliche Weise den Unterschied zwischen LEFT JOIN und INNER JOIN bei mySQL erklären ?

    Left Join
    Alle Datensätze der ersten (linken) Tabelle, auch wenn keine entsprechenden Werte für Datensätze in der zweiten Tabelle existieren.

    Right Join
    Alle Datensätze der zweiten (rechten) Tabelle, auch wenn keine entsprechenden Werte für Datensätze in der ersten Tabelle existieren.

    Gruß
    Viennamade

  2. hi,

    gehen wir davon aus, wir haben eine linke tabelle mit lauter frauen und eine rechte tabelle mit lauter männer. die grundlage einer jeden joins von männer und frauen (inner oder outer) ist das karthesische produkt, dass heißt er nimmt jede frau aus der ersten tabelle und verbindet sie mit jedem mann der zweiten tabelle. wären zum beispiel in der ersten tabelle 10 frauen und in der zweiten 5 männer, so würde das karthesische produkt 50 verschiedene beziehungen ausgeben. das wäre ein ganz schönes tollhaus.

    da wir aber anständig sind und nicht dieses gesamte produkt haben wollen, sondern nur bestimmte frauen aus der einen tabelle mit bestimmten männern aus der anderen verbinden wollen, gibt es den inner join. der inner join nimmt nur die datensätze aus dem karthesichen produkt, wo es eine gleicheit zwischen  den beiden tabelle der männer und frauen gibt. manche männer können natürlich auch mehrere frauen haben, aber er läßt alle frauen und männer weg, die keinen "partner" in der anderen tabelle gefunden haben.

    damit finden wir zwar alle christlichen paare und arabische harems wieder, wir können aber zum beispiel nicht alle frauen auflisten, die schon vergeben sind, zusammen mit den frauen, die sich noch auf den heiratsmarkt befinden, die eisernen jungfrauen sozusagen. und genau hier kommt der outer join (von vorne oder hinten ist egal) ins spiel. er zeigt alle frauen an, egal ob sie einen mann haben oder nicht. und wenn sie einen haben, dann geben sie aus, welcher das ist.

    Ilja

    1. Hallo Ilja,

      sehr nett beschrieben :-)

      Gruß,
      small-step