Fehler bei Summe einer Spalte in MySQL-Abfrage
MrSnoot
- php
0 Hopsel- datenbank
0 dedlfix
0 Rouven0 MrSnoot
Hi,
ich möchte mir die Summe einer Spalte aus der DB ausgeben lassen:
$abfrage = "SELECT datei, SUM(counter) AS summe FROM download";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
...
}
Da bekomme ich aber die Meldung: Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in ... on line 21.
Zeile 21 ist while($row = mysql_fetch_object($ergebnis))
Wenn ich nur die Summe ausgeben lasse, und keine andere Spalte, dann klappt es.
Es muss aber doch möglich sein mehrere Spalten und die Summe einer Spalte auszugeben, oder?
Hi MrSnoot!
Es muss aber doch möglich sein mehrere Spalten und die Summe einer Spalte auszugeben, oder?
Nur wenn du nach den Werten gruppierst, die keine Aggregatfunktion beinhalten.
MfG H☼psel
echo $begrüßung;
Da bekomme ich aber die Meldung: Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in ... on line 21.
Einmal Google mit dieser Meldung angeworfen hättest du sicher erfahren, dass das ein Folgefehler von PHP ist. Der eigentliche Fehler trat beim mysql_query auf, du hast ihn aber ignoriert und stattdessen den Rückgabewert false an mysql_fetch_object() verfüttert, das sich daraufhin beschwerte.
Es muss aber doch möglich sein mehrere Spalten und die Summe einer Spalte auszugeben, oder?
Ermittle zunächst den eigentlichen Fehlertext. mysql_error() hilft dir dabei, wenn mysql_query() durch seinen Rückgabewert anzeigt, dass ein Fehler auftrat. Alternativ kannst du das Statement auch mit mit phpMyAdmin oder MySQL selbst testen.
echo "$verabschiedung $name";
Hello,
SELECT datei, SUM(counter) AS summe FROM download
das nicht als Syntaxfehler zu bezeichnen ist grob fahrlässig von MySQL.
Es muss aber doch möglich sein mehrere Spalten und die Summe einer Spalte auszugeben, oder?
Ja, wie dir Hopsel bereits gesagt hat: Nutze eine Gruppierung, selektiere alle Spalten fortan entweder GEMÄSS dieser Gruppierung oder mit Hilfe einer Aggregation für die Gruppe:
SELECT datei, SUM(counter) AS summe FROM download GROUP BY datei
Bitte nutze NICHT MySQLs schlechte Angewohnheit aus, auch nicht gruppierte Spalten zu selektieren. Schreibe also bitte NICHT
SELECT datei, letzte_aenderung, SUM(counter) AS summe FROM download GROUP BY datei
-> letzte_aenderung ist weder Teil der Gruppierung noch unterliegt es einer Aggregation
MfG
Rouven
-> letzte_aenderung ist weder Teil der Gruppierung noch unterliegt es einer Aggregation
Okay, dann mach ich mich mal dazu schlau, Thx.