undso: Mehrere "sum" in einer Query

Hallo Forum,
ist es eigentlich nicht möglich, in eine Query mehrere Summ's einzupacken?

select sum(bloghits), sum(blogpoints), sum(compunkte) from blogs where userid=111 AND blogid=55;

Ich erhalte immer nur Null Zurück, obwohl die Tabelle so aussieht:

blogid  userid  senderid  bloghits  blogpoints  compunkte
      50 111 150 1 7 1

Grüße

  1. Hallo undso,

    ist es eigentlich nicht möglich, in eine Query mehrere Summ's einzupacken?

    doch, das ist möglich.

    select sum(bloghits), sum(blogpoints), sum(compunkte) from blogs where userid=111 AND blogid=55;

    Ich erhalte immer nur Null Zurück, obwohl die Tabelle so aussieht:

    blogid  userid  senderid  bloghits  blogpoints  compunkte
          50 111 150 1 7 1

    Und weil die Tabelle so aussieht sieht NULL richtig aus.

    Prüfe erstmal ob es zu Deinem "where" überhaupt passende Zeilen gibt.
    Also z.B.

    SELECT count(*) FROM blogs WHERE userid=111 AND blogid=55

    Viele Grüße

    Stefan

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Hi,
      sorry, hab ausversehen anstatt 55 beim posten 50 geschrieben. Mit 55 kriege ich auch Null raus, deshalb wundert mich das ganze, warum mehrere sum's nicht gehen.

      mysql 5.xx

      Grüße

      1. Hallo undso,

        sorry, hab ausversehen anstatt 55 beim posten 50 geschrieben. Mit 55 kriege ich auch Null raus, deshalb wundert mich das ganze, warum mehrere sum's nicht gehen.

        Am "SUM()" liegt es jedenfalls nicht.
        Hast Du auch geguckt ob count(*) Treffer liefert?

        Viele Grüße

        Stefan

        --
        bythewaythewebsuxgoofflineandenjoytheday
        1. Hi, ich habe den Fehler. War ein Fehler von mir. Ich hatte in der Testumgebung leider doch die falsche Blogid eingetragen.
          Was mich aber wundert, dass er als Ergebnis in phpmyAdmin NULL zurüchgibt und nicht 0 Ergebnisse (Sprich, keine Zeile als Treffer - MySQL lieferte ein leeres Resultat zurück (d.h. null Zeilen))

          Bevor wie dieses Thema abschließen eine andere kleine Frage.

          In einer Query habe ich drin:

          set punkte=punkte+&variable

          Das funktioniert optimal. Ich addiere zu den Punkten etwa dazu.
          Jetzt müsste ich die Query so erweitern, dass er erst etwas abzieht und dann addiert.

          set punkte=punkte-&variable1+&variable2

          Hab vorhin auch ein Debug gemacht von der Query die erzeugt wird:

          set punkte=punkte+0+1

          (Die 0 passt in diesem Beispiel. Da wurde nichts abezogen)
          Das ganze funktioniert leider nicht, muss ich da irgendwie klammern?
          Grüße

          1. Ich habe glaub den Fehler.

            Führe ich die gesamte Query aus, funktioniert es nicht:
            update blog set bloghits=1, blogpoints=5, set punkte=punkte-0+3 where id=111;

            Führe ich die Query ohne set punkte=punkte-0+1 aus geht sie:
            update blog set bloghits=1, blogpoints=5 where id=111;

            Genauso, wenn ich die Qery nur für die Punkte ausführe:
            update blog set punkte=punkte-0+3 where id=111;

            Ich wollte eigentlich durch die erste Query eine ganze Query sparen.
            Komisch oder ich bin heute nur sehr schlecht drauf :-)

            1. echo $begrüßung;

              Führe ich die gesamte Query aus, funktioniert es nicht:

              "funktioniert nicht" ist ja auch keine gescheite Fehlermeldung. Du tust dir und den Antwortenden einen Gefallen, wenn du genauer beobachtest und beschreibst.

              update blog set bloghits=1, blogpoints=5, set punkte=punkte-0+3 where id=111;

              Das ist ungültige Syntax, weil das Schlüsselwort SET nur einmal in der Query auftauchen darf. Dies hat dir MySQL ganz sicher mit einer Fehlermeldung gesagt oder sagen wollen.

              echo "$verabschiedung $name";

              1. Danke,
                heißt das, dass ich dann zwei gesonderte Querys ausführen muss?
                Grüße

                1. echo $begrüßung;

                  heißt das, dass ich dann zwei gesonderte Querys ausführen muss?

                  Nein, nicht unbedingt. Im Allgemeinen gibt man mehrere "feldname=ausdruck"-Paare durch Komma getrennt hinter dem einen SET an. Du hast es ja schon mit den ersten beiden Paaren in deiner Query richtig gemacht.

                  echo "$verabschiedung $name";

                  1. Oh thanks. Auch ein Danke an Stefan.

                    So funkt es nun:
                    update jf_registry set punkte=punkte+3, bloghits=1, blogpoints=5 where id=111;

                    Grüße

                2. Hallo undso,

                  heißt das, dass ich dann zwei gesonderte Querys ausführen muss?

                  Entweder so - aber schlauer wäre es wenn Du nachliest wie man es besser macht.
                  Die Grammatik des UPDATE Statements wird z.B. dort schematisch erläutert:
                  http://dev.mysql.com/doc/refman/5.1/en/update.html

                  Viele Grüße

                  Stefan

                  --
                  bythewaythewebsuxgoofflineandenjoytheday