left join mit group by

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

  • left join mit group by

    Hallo,
    in einem select mit group by bekomme ich falsche Summerwerte zurück, wobei die Werte sum(table1.wert1), sum(table2.wert) genau den richtigen Wert multipliziert mit der Anzahl der Zeilen aus table3 ergeben. Die Rückgabe aus sum(table3.wert) ist richtig. Der Fehler
    trat mit dem Einbinden des left join auf. Es scheint, group by greift nicht über alle gewünschten Spalten:


    select sum(table1.wert1), sum(table2.wert), sum(table3.wert)
    from table1 left join table3 on table1.id = table3.id where table1.id = table2.id group by table1.spalte1, table3.spalte1

    In der Verknüpfung zu Table3 können NULL-Werte auftreten, die anderen Verknüpfungen sind snychron.
    Mir stellt sich die Frage, kann alles in einem select gelöst werden oder benötige ich ein zweites select?
    Ich arbeite mit MySql 3.23.59.
    Fribu

  • #2
    du schreibst....

    where table1.id = table2.id

    .... aber wo bitte ist table2 in der query?
    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


    • #3
      @abraxax: augen auf im strassenverkehr

      Code:
      select sum(table1.wert1), sum(table2.wert), sum(table3.wert) 
      from table1 left join table2 using(id) left join table3 using(id) group by table1.spalte1, table3.spalte1

      Kommentar


      • #4
        Original geschrieben von graf
        @abraxax: augen auf im strassenverkehr
        tja. das ist immer das problem, wie man deine query formatiert, sodass sie auch für andere leute übersichtlich wird.

        ansonsten siehst du ja, was passiert...

        deine war im übrigen auch nciht viel besser formatiert.... hier mal ein besseres beispiel
        Code:
        SELECT
            SUM(table1.wert1),
            SUM(table2.wert),
            SUM(table3.wert) 
        FROM
            table1
                LEFT JOIN table2 USING(id)
                    LEFT JOIN table3 USING(id)
        GROUP BY
            table1.spalte1,
            table3.spalte1
        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


        • #5
          Hallo,
          danke für die prompte Antwort, konnte den Tip erst jetzt testen. Jetzt ist mir mit left join ein Licht aufgegangen.
          Problem, die Summenwerte stimmen trotz dem geänderten Script nicht, gleiches wie vorher - die Abfrage ist jetzt aber schneller.


          Gruß Fribu

          Kommentar

          Lädt...
          X