Mehrere "sum" in einer Query
undso
- datenbank
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
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
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
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
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
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 :-)
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";
Danke,
heißt das, dass ich dann zwei gesonderte Querys ausführen muss?
Grüße
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";
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
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