Ankündigung

Einklappen
Keine Ankündigung bisher.

UPDATE mit GROUP BY

Einklappen

Neue Werbung 2019

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

  • UPDATE mit GROUP BY

    Hey Zusammen,

    ich habe mal wieder einen Select-Befehl geschrieben, der funktioniert und mir das anzeigt was ich möchte.

    SELECT SUM(tip_pkt) as pkt FROM tip_spieltag as tip WHERE spieltags_id = 28 GROUP by user_id;

    in der Tabelle tip_spieltag stehen zu einer user_id mehrere Werte, diese möchte ich zusammenrechnen und in eine andere Tabelle ablegen

    Mein UPDATE-Versuch:
    UPDATE ges_pkt_spieltag as ges JOIN tip_spieltag as tip
    ON ges.user_id = tip.user_id AND ges.spieltags_id = tip.spieltags_id
    SET ges.test = SUM(tip.tip_pkt)
    WHERE ges.user_id = tip.user_id AND ges.spieltags_id = tip.spieltags_id;

    Antwort: Invalid use of group funktion

    hat jemand eine Idee???
    Lukas
    www.web-ted.de


  • #2
    Wie kommst du denn auf die Idee, dass du in ein normales UPDATE-Statement einfach so eine Aggregatfunktion wie SUM reinklatschen könntest ...?

    Kommentar


    • #3
      geht das nicht?

      Hab das schon in ein paar foren gefunden.
      www.web-ted.de

      Kommentar


      • #4
        Ein UPDATE der sein Ergebnis aus mehreren Tabellen zusammen sucht, ist nicht einfach und man tut sich leichter mit einem SELECT zuerst alle Daten zu suchen und anschließend mehrere einzelne UPDATEs zu machen.

        Trotzdem ist mir mal folgendes dazu eingefallen. Ich hoffe es funktioniert. Ohne Tabellen läßt es sich eben schwer testen.

        Code:
        UPDATE ges_pkt_spieltag AS ges
        SET    ges.test = (SELECT SUM(tip_pkt) AS pkt
                           FROM   tip_spieltag AS tip
                           WHERE  spieltags_id = 28
                               AND tip.user_id = ges.user_id)
        WHERE  ( ges.user_id, ges.spieltags_id ) IN (SELECT tip.user_id,
                                                            tip.spieltags_id
                                                     FROM   tip_spieltag AS tip
                                                     WHERE  spieltags_id = 28)
        Grüße
        Thomas

        Kommentar


        • #5
          Hey Thomas,

          vielen Dank für deinen Tipp, leider kommt dabei eine Endlosschleife raus.
          Kann mir aber nicht erklären warum?
          www.web-ted.de

          Kommentar


          • #6
            Was ist eine Endlosschleife? Läuft der SQL jetzt sehr lang oder hast Du in Deinem Script jetzt eine Schleife mit vielen einzelnen UPDATEs gemacht?

            Um den SQL zu testen, könntest Du mal die CREATE TABLE der beiden Tabellen ges_pkt_spieltag und tip_spieltag zeigen, dann teste ich den SQL mal und melde mich morgen wieder.

            Grüße
            Thomas

            Kommentar

            Lädt...
            X