Join Logik mehrere Joins

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Haudruferzappeltnoch.

    Join Logik mehrere Joins

    Hallo,

    im Internet finde ich keine expliziten Statements dazu, deswegen wollte ich hier mal nachfragen.

    Sind die Statements hier gleich? Also bilde ich mit mehreren Joins eine strengere Schnittmenge? Oder eine Vereinigung von Schnittmengen, dann wäre die zweite Variante eine größere Menge als ohne zweiten Join

    SQL-Abfrage

    1. Select * from (Select * from grün Inner Join blau On blau.key = grün.key) cyan
    2. Inner Join rot On rot.key = cyan.key
    ergibt weiß

    SQL-Abfrage

    1. Select * from grün
    2. Inner Join blau On blau.key = grün.key
    3. Inner Join rot On rot.key = grün.key
    ergibt weiß oder gelb vereinigt mit cyan?

    Viele Grüße
    ich muss ganz ehrlich sagen: ich schnalle das beispiel überhaupt nicht...

    Was soll das bedeuten "Sind die Statements hier gleich?" Und was sollen diese Farben?

    OK. vielleicht liege ich übelst daneben, aber die farben machen mich kirre.

    im ersten bsp. erzeugst du zuerst eine table, die alle daten gibt, die in grün und blau verbunden sind. dann joinst du diese table mit rot, dementsprechend bekommst du auch nur die, die mit grün, blau und rot verbunden sind.
    im zweiten bsp. zeigst du erstmal alle grünen, die joinst du dann mit der blauen. grün ist aber zudem mit rot gejoint. daher ist das ergebnis dasselbe

    aber ja, mehrere inner joins reduzieren die menge, da ja alle daten in den tabellen vorhanden und verbunden sein müssen.
    Ich versuche mir das immer mit den Mengen vorzustellen. Da gibts ja die Illustrationen mit sich überlappenden Kreisen. Die Farbe hab ich nur gewählt weil das ja eine natürliche Benennung für Schnittmengen bestimmter Mengen sind. Cyan ist die Schnittmenge aus blau und grün

    Also ich hab mich gefragt ob die zweite Abfrage mir auch nur die weiße Menge gibt. Und nicht gelb weiß und cyan.

    Danke dir
    Bilder
    • farben.png

      3,78 kB, 238×221, 61 mal angesehen
    ich habe das mal mit beiden queries ausprobiert. beides funktioniert ohne probleme. selbst der ausführungsplan von sql ist identisch, was ja auch irgendwie logisch ist. oder anders: weder die eine noch die andere query ist besser oder schlechter. und auch beide liefern die selben daten
    aber query 1 ist halt kein schöner code

    aber kurzum, mit beiden queries bekommst du ausschlielich die weiße menge

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „rrobbyy“ ()

    Das beide Statements laufen habe ich auch vorher getestet!
    Bzw. habe ich mit dem Zweiten arbeiten wollen, hatte jedoch Bedenken wie angesprochen und bis zur Bestätigung das erstere verwendet, wo ich mir so schon sicher war^^

    Dass sie sogar die gleiche Performance haben ist gut zu Wissen genau das hätte ich nämlich nicht gedacht. Dann hätte ich es ja auch so lassen können :D

    Danke