Unterschied zwischen Outer/Inner/Left/Right JOINS

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Unterschied zwischen Outer/Inner/Left/Right JOINS

    Guten Tag,

    also ich habe mich in letzter Zeit mit den JOINS beschäftigt, den Sticky Thread gelesen und auch sonst nachgelesen.

    Ich verstehe einfach nicht den Unterschied zwischen Inner/Outer/Left/Right JOINS.

    Wie soll man sich das _bildlich_ vorstellen ?

    Z. B. :

    PHP-Code:
    LEFT JOIN productinfo p4 on p1.pid p4.pid 
    Heißt das man schaut, wo pid von Tabelle p1 mit pid von Tabelle p4 übereinstimmt und hängt den Datensatz von Tabelle p4 "bildlich" auf der linken Seite der Tabelle p1 an. Also setzt sie davor ?

    Wenn dem so ist, was ist dann ein Outer/Inner Join?
    Pickel ? Übergewicht ? Depressionen ?
    Brot, Kartoffeln und Milch sind Gift!
    http://www.paleofood.de

  • #2
    Wenn ich das auswendig richtig weiss, dann heisst Inner Join dass in beiden Tabellen ein Datensatz sein muss, der zusammengehört, bei Left Join werden alle Datensätze der linken Tabelle ausgegeben, und NUR falls vorhanden, die dazugehörigen datensätze der rechten Tabelle, OUTER JOIN existiert laut doku in MySQL nur aus Kompatibilitätsgründen, wird hier aber genau so ausgeführt wie ein left Join, Right Join ist das selbe Wie Left Join, bloss das die tabellen vertauscht werden.

    Aber ohne Garantie, mal sehen, was die profis dazu sagen ^^


    An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

    Kommentar


    • #3
      bei LEFT JOIN werden die daten aus der linken tabelle immer genommen. sind in der rechten tabelle daten vorhanden, werden sie gezeigt, ansonsten sind die felder NULL.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        Original geschrieben von MaxP0W3R
        Right Join ist das selbe Wie Left Join, bloss das die tabellen vertauscht werden.
        die Tabellen werden nicht vertauscht . Es werden alle DS der [color=red]rechte[/color] Tabelle und nur DS der[color=red] linken[/color] bei der, die Bedingung in ON zutrifft.
        EDIT:
        **edit**
        Zuletzt geändert von asp2php; 22.07.2004, 15:47.

        Kommentar


        • #5
          Dann wärs ja genau das selbe wie ein Left join

          bei right join werden halt alle rechten DS genommen und aus der linken die dazugehörigen Daten oder halt NULL

          oder lieg ich da jetzt falsch ?


          An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

          Kommentar


          • #6
            Original geschrieben von asp2php
            die Tabellen werden nicht vertauscht . Es werden alle DS der rechten Tabelle und nur DS der linken bei der, die Bedingung in ON zutrifft.
            EDIT:
            ich meine rechte
            Zuletzt geändert von asp2php; 22.07.2004, 15:46.

            Kommentar


            • #7
              Ja, ok ich habe mich missverständlich ausgedrückt.

              Mein Unterbwsusstsein hat mich dazu veranlasst dass zu schreiben, weil es weiss, dass man ja ein RIGHT JOIN genau so gut als LEFT JOIN schreiben kann, das ganze also quasi "gespiegelt" ist.

              Der normale JOIN wird als INNER JOIN behandelt oder ?


              An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

              Kommentar


              • #8
                definiere "normaler" Join

                Kommentar


                • #9
                  select a.blubb, b. blubber FROM tabelle1 as a JOIN tabelle2 asb


                  An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                  Kommentar


                  • #10
                    nee das ist ein CROSS JOIN, das braucht man in den seltensten Fällen. Hier wird ein Kreuzprodukt gebildet. Ergebnismenge ist AnzahlZeilenVonA * AnzahlZeilenVonB

                    Kommentar


                    • #11
                      Original geschrieben von asp2php
                      definiere "normaler" Join
                      Ein JOIN, der nicht wie Ihr alle hier in die Klapsmühle gehört ... !
                      carpe noctem

                      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                      Kommentar


                      • #12
                        OffTopic:
                        Was ist schon "Normal" ?


                        An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                        Kommentar


                        • #13
                          Original geschrieben von goth
                          Ein JOIN, der nicht wie Ihr alle hier in die Klapsmühle gehört ... !
                          ah, der goth ist wieder arbeitlos

                          Kommentar


                          • #14
                            Original geschrieben von Abraxax
                            bei LEFT JOIN werden die daten aus der linken tabelle immer genommen. sind in der rechten tabelle daten vorhanden, werden sie gezeigt, ansonsten sind die felder NULL.
                            Was heißt "sie werden gezeigt" ? Verstehe ich nicht.

                            Gezeigt wird doch was, was mit SELECT ausgewählt wird.

                            PHP-Code:
                            LEFT JOIN productinfo p4 on p1.pid p4.pid 
                            Blöde Frage, aber welches wäre die die linke und welches die rechte Tabelle ? Relativ zum Gleichheitszeichen. Bin verwirrt.
                            Zuletzt geändert von antman; 22.07.2004, 17:53.
                            Pickel ? Übergewicht ? Depressionen ?
                            Brot, Kartoffeln und Milch sind Gift!
                            http://www.paleofood.de

                            Kommentar


                            • #15
                              Original geschrieben von antman
                              Was heißt "sie werden gezeigt" ? Verstehe ich nicht.

                              Gezeigt wird doch was, was mit SELECT ausgewählt wird.
                              himmel ... dann ersetze halt "gezeigt" durch "zurückgeliefert", wenn dir das hilft, den satz besser zu verstehen (hoffentlich).
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X