MrSnoot: Fehler bei Summe einer Spalte in MySQL-Abfrage

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?

  1. 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

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
  2. 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";

  3. 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

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Ist Dir langweilig? Willst du Spaß? Willst Du Party? Ganz einfach!!! Schicke eine SMS mit dem Bestellwort "Feuer" an die 112 und innerhalb von 5 Minuten stehen 20 Männer mit lustigen Partyhüten, Sirenen und Partywagen vor deinem Haus!  --  Herkunft unbekannt
    1. -> letzte_aenderung ist weder Teil der Gruppierung noch unterliegt es einer Aggregation

      Okay, dann mach ich mich mal dazu schlau, Thx.