MYSQL Summe einer Spalte ausgeben?

geri3d  20.09.2020, 14:31

Was spuckt denn PhpMyAdmin aus wenn du das Statement ausführst?

LukaMarcelHD 
Fragesteller
 20.09.2020, 14:44

Das Statement funktioniert

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

1.) COUNT erscheint mir in diesem konkreten Fall angebrachter als SUM

2.) SUM dürfte nur bei Spalten mit numerischem Wert funktionieren. Da du in der conditiond eines WHERE-clauses allerdings Anführungszeichen verwendet hast, gehe ich davon aus, dass es sich nicht um ein numerisches Feld handelt.

LukaMarcelHD 
Fragesteller
 20.09.2020, 14:45

Es handelt sich um einen Numerischen Wert, der Befehl an sich funktioniert auch.

Allerdings funktioniert die Ausgabe in php nicht.

0
Destranix  20.09.2020, 14:50
@LukaMarcelHD

Schau mal, ob mysqli_query fehlschlägt.(FALSE zurückliefert).

Ansonsten versuch mal, korrekterweise die Anführungsstriche in deiner WHERE-condition wegzulassen.

Ansonsten sehe ich keinen Fehler.

0
LukaMarcelHD 
Fragesteller
 20.09.2020, 14:51
@Destranix

Folgende Fehlermeldung bekomme ich:

Notice: Undefined property: stdClass::$status in /var/www/html/lotterie/start.html on line 83

0
Destranix  20.09.2020, 14:55
@LukaMarcelHD

Ah na klar. Dein Feld heiß nicht "status". Du wählst ja mittels SELECT nicht "status" aus, sondern "SUM(status)".

Wie das Feld dann heißt, weiß ich nicht, aber du kannst es ja mittels Alias(AS) benennen.

0
LukaMarcelHD 
Fragesteller
 20.09.2020, 15:06
@Destranix Fatal error: Uncaught Error: Call to undefined method stdClass::SUM() in /var/www/html/lotterie/start.html:83 Stack trace: #0 {main} thrown in

Dann bekomme ich diese Fehlermeldung

0
Destranix  20.09.2020, 15:12
@LukaMarcelHD

Ja na klar. Du hast den fehler gemacht, von dem ich bereits implizit ausging, dass man ihn nicht machen würde.

"SUM(status)" ist kein gültiger Bezeichner für eine Variable. Folglich wird das Feld wohl anders beannt.

Da ich allerdings nicht wieß, wie das benannt wird, rate ich dazu, ein Alias zu nutzen, um im Query das Feld umzubenennen.

SELECT SUM(status) AS statusSum FROM lose WHERE status = 1

Dann kannst du das Feld mittels

$row->statusSum

abrufen.

1

3 Möglichkeiten:

SELECT SUM(status) FROM lose GROUP BY Status HAVING Status='1';

SUM() ist eine Aggregatfunktion, die aus mehreren Zeilen eine macht. Daher das GROUP zur Verdeutlichung, auch wenn es MySQL selbst machen würde.

HAVING ist das ähnlich WHERE, bezieht aber Ergebnisse in GROUP ein, die zutreffen, WHERE funktioniert nicht immer bei Aggregatfunktionen.

SELECT COUNT(status) FROM lose WHERE Status='1';

oder per PHP

$ergebnis=mysqli_query($name1, "SELECT status FROM lose WHERE Status='1';");

echo array_sum(mysqli_fetch_all($ergebnis));