me&myself: SUM wird doppelt so groß

"SELECT SUM(tabelle.punkte) as summe, tabelle.nutzer
FROM (SELECT points FROM history_league LIMIT 4)
JOIN tabelle2 ON tabelle2.wert='".mysql_real_escape_string($_POST['wert'])."'
GROUP BY tabelle.nutzer
ORDER BY summe DESC"

Jedoch kommt das doppelte raus, als rauskommen sollte.

  1. yo,

    vermute mal du benutzt mysql und in welcher version ?

    was soll den die unterabfrage in der FROM klausel mit dem LIMIT 4 bewirken, zumal ich mir nicht sicher bin, ob LIMIT in unterabfragen verwendet werden können.

    woher kommt den der aliasname "tabelle", den kann ich in deiner abfrage nicht finden, hast du uns etwa nicht alls gezeigt oder sol das tabelle2 sein ?

    des weiteren fehlt wohl die JJOIN bedinung. aber das ist alles nur raten, solange du uns nicht ein paar mehr brauchbare infos gibts.

    Ilja

    1. "SELECT SUM(tabelle.punkte) as summe, tabelle.nutzer
      FROM (SELECT punkte FROM tabelle ORDER BY punkte DESC LIMIT 4)
      JOIN tabelle2 ON tabelle2.wert='".mysql_real_escape_string($_POST['wert'])."'
      GROUP BY tabelle.nutzer
      ORDER BY summe DESC"

      So sollte das eigentlich sein. Hatte mich beim obigen vertan. Eigentlich soll die Summe der vier größten Einträge genommen werden und das ganze bei nutzer gruppiert und mit der Endsumme geordnet.
      Aber die Summe, die ich beim ausgeben heraushabe, ist leider doppelt so groß als sie sein sollte.

      1. Hello,

        Aber die Summe, die ich beim ausgeben heraushabe, ist leider doppelt so groß als sie sein sollte.

        dann ergibt

        JOIN tabelle2 ON tabelle2.wert='".mysql_real_escape_string($_POST['wert'])."'

        wohl für jeden Datensatz in tabelle zwei Treffer in der entsprechenden tabelle2.
        Wie sehen denn die Daten und das erwartete Ergebnis aus?

        MfG
        Rouven

        --
        -------------------
        sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
        "I wish it need not have happened in my time" - "So do I, and so do all who live to see such times. But that is not for them to decide. All we have to decide is what to do with the time that is given us."  --  J.R.R. Tolkien: "The Lord Of The Rings: The Fellowship Of The Ring"
      2. Hi,

        Aber die Summe, die ich beim ausgeben heraushabe, ist leider doppelt so groß als sie sein sollte.

        Versuch doch mal das "SUM()" und die "GROUP BY"-Klausel wegzulassen. Dann müsstest du alle Daten sehen, die für die Berechnung der Summe verwendet werden.

        mfG,
        steckl

      3. yo,

        mal davon abgesehen, dass du uns einige dinge nicht verraten willst, wie zum beispiel die version deines dbms, wiederhole ich einfach noch mal einen entscheidenen aspekt, nämlich dass ganz offensichtlich die JOIN bedingung fehlt. lass es mich mit anderen worten ausdrücken:

        wie stehen den die tabellen mit den klangvollen namen "tabelle" und "tabelle2" in beziehung miteinander ?

        außerdem wäre es schön, der unterabfrage in der FROM klausel einen aliasnamen zu vergeben.

        Ilja