Problem mit SELECT, SUM und WHERE

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

  • Problem mit SELECT, SUM und WHERE

    Hi @ all,

    erstmal etwas zur Datenbankstruktur
    In den Datenbanktabellen "f_user", "f_user_group" sind folgende, für meine Frage wichtige, Spalten enthalten:

    ________________________________
    Tabelle: "f_user"
    *************
    user_id

    user_points
    ________________________________
    Tabelle: "f_user_group"
    *******************
    user_id

    group_id
    ________________________________

    Nun zu meinem Problem
    Ich wollte mit folgender Abfrage den Gesamtwert (von Spalte "user_points") aller Zeilen, in denen die "group_id=99" ist, ermitteln:


    $sql = mysql_query("SELECT f_users.user_points, SUM(user_points)AS punkte FROM f_users, f_user_group WHERE f_users.user_id=f_user_group.user_id AND group_id=99 GROUP BY f_users.user_points");
    while ($myrow = mysql_fetch_array($sql)) {
    echo $myrow[user_points];
    }

    Das Ergebnis das ich erhalte ist 03050 es sollte aber 80 sein.
    Ahhhhhhhhh einen ganze nacht Programmieren und ein ganzen tag rechersche im Internet haben keinen Erfolg gebracht.
    Wieso werden die zahlen nicht addiert?
    Ich bin für jede hilfe sehr dankbar.


    MfG Sirius

  • #2
    wäre nicht group by f_users.user_ID richtig?
    Zuletzt geändert von MelloPie; 21.09.2003, 18:49.
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      SELECT f_users.username, f_users.user_points, SUM(user_points)AS punkte FROM f_users, f_user_group WHERE f_users.user_id=f_user_group.user_id AND group_id=99 GROUP BY f_users.user_id


      Das Ergebnis das ich erhalte ist 3050000000000 es sollte aber 80 sein.
      Es werden zwar nur die User mit der "group_id" 99 ausgewählt aber es wird nicht addiert.

      warum nur

      Kommentar


      • #4
        Code:
        SELECT
          u.user_id, SUM(u.user_points) punkte, g.group_id
        FROM
          f_user_groups g
          INNER JOIN f_users u USING (user_id)
        WHERE
          g.group_id=99
        GROUP BY g.user_id
        poste mal bitte das ergebnis
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          user_id /punkte /group_id
          2 /30 /99
          3/ 50 /99
          5 /0 /99
          12 /0 /99
          32 /0/ 99
          34 /0 /99
          36 /0 /99
          51 /0 /99
          69 /0/ 99
          79 /0/ 99
          82 /0/ 99

          SQL Abfrage in phpMyAdmin gestellt

          Kommentar


          • #6
            lass dir mal die spalte user_id nicht ausgeben
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              SELECT
              SUM(u.user_points) punkte, g.group_id
              FROM
              f_user_group g
              INNER JOIN f_users u USING (user_id)
              WHERE
              g.group_id=99
              GROUP BY g.user_id

              Das Ergebniss ist das gleiche in grün nur ohne user_id




              SELECT f_users.user_points, SUM(user_points)AS punkte FROM f_users, f_user_group WHERE f_users.user_id=f_user_group.user_id AND group_id=99 GROUP BY f_users.user_id

              Ergebniss:

              user_points /punkte
              30 /30
              50 /50
              0 /0
              0 /0
              0 /0
              0 /0
              0 /0
              0 /0
              0 /0
              0 /0
              0 /0

              auch keine 80

              hmmmm


              Sirius

              Kommentar


              • #8
                das group by ist auch noch falsch, wenn du die summe der punkte aller user einer gruppe haben willst, musst du auch nach group_id gruppieren
                Code:
                SELECT
                  SUM(u.user_points) punkte
                FROM
                  f_user_groups g
                  INNER JOIN f_users u USING(user_id)
                WHERE
                  g.group_id=99
                oder für alle gruppen
                Code:
                SELECT
                  g.group_id, SUM(u.user_points) punkte
                FROM
                  f_user_groups g
                  INNER JOIN f_users u USING(user_id)
                GROUP BY
                  g.group_id
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Vielen Dank !!!

                  Für Deine Hilfe mrhappiness, hier ein kleiner Pokal von mir als Anerkennung für gute Arbeit




                  MfG Sirius

                  Kommentar

                  Lädt...
                  X