Zur Navigation

Summenfehler

1 uwe

Hallo,
ich bin bei einer Abfrage:
Summe sortiert nach Monat und Jahr.

Es wird eine Liste gezeigt, aber die Summe passen nicht.
Komischer Weise sind die alle über 100 und kleiner 1000

Gruss
Uwe

Liste:
22 Monate gefunden!
Jahr Monat Anzahl
2009 01 428
2010 01 337
2009 02 401
2009 03 404
2008 04 305
2009 04 337
und so weiter...


$SQLAbfrage = "SELECT wert, substring(monat, 1, 4) AS jahr, substring(monat, 5, 6) AS mmonat,COUNT(wert) anzahl FROM $tabellenname group by mmonat, jahr";


$Ergebnis = mysql_query($SQLAbfrage, $iVerbNr)
or
die( "<H2>Abfragefehler</H2>" . mysql_error());	
 
$nAnzZeilen = mysql_num_rows($Ergebnis);
echo "<H3>" . $nAnzZeilen . " Monate gefunden!</H3>";
 
echo "<TABLE BORDER='1'>";
echo "<TR>";
echo "<TH>Jahr</TH>";
echo "<TH>Monat</TH>";

echo "<TH>Anzahl</TH>";
echo "</TR>";
while ( $aDaten = mysql_fetch_array( $Ergebnis ) )
{
   echo "<TR>";
      echo "<TD>" . $aDaten["jahr"] . "</TD>";
      echo "<TD>" . $aDaten["mmonat"] . "</TD>";

      echo "<TD>" . $aDaten["anzahl"] . "</TD>";
   echo "</TR>";
}
echo "</TABLE>";
?>

17.01.2010 18:03

2 Jörg Kruse

Fehlt hier nicht noch ein AS:

COUNT(wert) anzahl

Wenn du die Summe der Werte haben möchtest, wäre die Funktion SUM() hier aber passender, COUNT() zählt ja nur die Anzahl der Wertangaben (d.h. die Zeilen eines Monats)

SUM(wert) AS anzahl

Für die Sortierung benötigst du am Ende noch ein ORDER BY statement

ORDER BY jahr, mmonat

17.01.2010 21:35

3 Uwe (Gast)

Hallo,
danke für die Info.
Es sollen schon die Anzahl der Besuche (also count) gezählt werden.
Deine Angaben habe ich eingebaut, aber so richtig geändert hat sich nichts. Die Zahlen sind immer noch falsch.
Es soll auch mit der Sortierung so sein, das ich immer die Monate (als Vergleich) untereinander stehen habe.

Jetzt kommt als Ergebnis:
22 Monate gefunden!
Jahr Monat Anzahl
2009 01 428
2010 01 337
2009 02 401
2009 03 404
und so weiter...

Gruss
Uwe

17.01.2010 22:52

4 Jörg Kruse

Es sollen schon die Anzahl der Besuche (also count) gezählt werden.

Was für Daten stehen denn in der Spalte wert?

Und wie (ungefähr) sollten die korrekten Ergebnisse für anzahl sein: niedriger oder höher?

Es soll auch mit der Sortierung so sein, das ich immer die Monate (als Vergleich) untereinander stehen habe.

Dann musst du andersrum sortieren.

ORDER BY mmonat, jahr

17.01.2010 23:06

5 Uwe (Gast)

Hallo,
nach langem Suchen ein Stück weiter:
Es stehen noch andere Daten in dem Feld Wert.
Diese müssen noch rausgefiltert werden.

Ich werde es noch weiter probieren.

Gruss
Uwe

18.01.2010 22:42

6 Jörg Kruse

Bei einem COUNT(wert) werden nur die Zeilen pro Gruppierung gezählt - da könnte man denke ich genauso COUNT(irgendeineanderespalte) nehmen. Wenn du die unterschiedlichen Vorkommen von wert pro Gruppierung zählen möchtest, wäre aber ein COUNT(DISTINCT(wert)) zielführend.

18.01.2010 23:27

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]