Statistik fehlerhaft

Sasser

Erfahrenes Mitglied
Guten Tag!

Ich lasse per PHP ein Diagramm erstellen, welches den Umsatz diesen Monats nach Zahlungsmethoden anzeigt:

PHP:
$month = date ( "m", time () );
$result = mysql_query ( "SELECT `payment` AS item, SUM(`amount`) AS amounts FROM transactions WHERE `date` LIKE '%-" . $month . "-%' GROUP BY `payment` ORDER BY amounts DESC" );

Weiterhin lasse ich mir den Umsatz diesen Jahres nach Zahlungsmethoden erstellen:

PHP:
$year = date ( "Y", time () );
$result = mysql_query ( "SELECT `payment` AS item, SUM(`amount`) AS amounts FROM transactions WHERE `date` LIKE '" . $year . "-%' GROUP BY `payment` ORDER BY amounts DESC" );

Korioserweise wird mir bei diesem Monat mehr angezeigt, als bei diesem Jahr. Normalerweise müsste es doch umgekehrt sein.

Was mache ich falsch? Das Datum ist im Format YYYY-MM-TT gespeichert.
 
Zuletzt bearbeitet:
Warum ist das Datum nicht als date gespeichert? Würde dir viele Möglichkeiten zur sauberen Auswertung geben.

Zudem versteh ich nicht, wie jetzt das Datum gespeichert ist. Im SQL schreibst du 'YYYY-MM-DD' und in deinem Text 'YYYY.MM'. Also, wie jetzt?

in deiner Monatsauswertung ignorierst du das Jahr. Es zählt also zum Beispiel alle Daten des Februars über alle Jahre hinweg zusammen (Februar 2008 + Februar 2009 + Februar 2010)

SQL:
SELECT 
	`payment` AS item, 
	SUM(`amount`) AS amounts 
FROM transactions 
WHERE `date` LIKE '{$year}-{$month}-%' 
GROUP BY `payment` 
ORDER BY amounts DESC
 
Zuletzt bearbeitet von einem Moderator:
OK, nun habe ich den Fehler gefunden...

Natürlich fehlte bei diesem Monat noch:

Code:
&& `date` LIKE '" . $year . "-%'

Sonst wird ja logischerweise von jedem Jahr dieser Monat zusammengenommen.

Trotzdem vielen Dank! :D
 
Ich rate dir trotzdem zum Datumsformat. Dann gehts ganz leicht über SQL

für den Monat
SQL:
WHERE EXTRACT(YEAR_MONTH FROM CURRDATE()) = EXTRACT(YEAR_MONTH FROM `date`)

Für das Jahr
SQL:
WHERE YEAR(CURRDATE()) = YEAR(`date`)
 
Zuletzt bearbeitet von einem Moderator:
Zurück