Forum Doku Wiki Blog

Forumsarchiv 2010, November
MSQL, soll nach Jahren zusammenzälen, klappt nur Tage weise

archivierte Beiträge lesen

  1. (DATENBANK) MSQL, soll nach Jahren zusammenzälen, klappt nur Tage weise von Sascha, 04. 11. 2010, 11:16

MSQL, soll nach Jahren zusammenzälen, klappt nur Tage weise

Der folgende Beitrag wurde am 04. 11. 2010, 11:16 Uhr von Sascha veröffentlicht.


Ich habe eine Tabelle in meiner MYSQL Datenbank, die hat eien Spalte Datum, in der steht ein timestap:


2010-11-04 08:54:17
2010-11-03 15:46:43
2010-11-03 15:04:01
2009-01-03 14:16:10
2009-01-03 13:07:25
2009-01-03 09:48:31
2008-10-03 14:16:10
2008-10-03 13:07:25
2008-10-03 09:48:31

Nun würde ich gerne alle Zeilen zählen und nach Jahren sortieren,

aber so wie ich es mache sortiert er es mir nach dem ganzen Datum und nicht nach Jahren! Kann mir jemand sagen wa sich da wiede rmal falsch mache?


SELECT DATE_FORMAT( date, '%Y' ) AS datum, count( * ) AS zugriffe
FROM count
GROUP BY date( date )
ORDER BY date DESC



Sascha (der Ratlose)

MSQL, soll nach Jahren zusammenzälen, klappt nur Tage weise

Der folgende Beitrag wurde am 04. 11. 2010, 11:23 Uhr von Alex veröffentlicht.

>
> Ich habe eine Tabelle in meiner MYSQL Datenbank, die hat eien Spalte Datum, in der steht ein timestap:
Nein, das ist kein timestamp - aber es ist gut so, weil ein timestamp eh nicht so toll wäre...

>
> Nun würde ich gerne alle Zeilen zählen und nach Jahren sortieren,
»»
Das widerspricht deiner Überschrift und deinem Code - dort willst du nämlich auch gruppieren.

> aber so wie ich es mache sortiert er es mir nach dem ganzen Datum und nicht nach Jahren! Kann mir jemand sagen wa sich da wiede rmal falsch mache?
>
>
> SELECT DATE_FORMAT( date, '%Y' ) AS datum, count( * ) AS zugriffe
> FROM count
> GROUP BY date( date )
> ORDER BY date DESC

>
MySQL macht genau das, wonach du fragst. Es gruppiert nach "date" und da steht nunmal das ganze Datum und nicht nur das Jahr. Aber du hast doch schon ein "datum" mit DATE_FORMAT erstellt. Nutze das doch mal in GROUP BY...

Gruß
Alex

MSQL, soll nach Jahren zusammenzälen, klappt nur Tage weise

Der folgende Beitrag wurde am 04. 11. 2010, 11:39 Uhr von Sascha veröffentlicht.

O Gott...


SELECT count( * ) AS zugriffe, DATE_FORMAT( date, '%Y' ) AS datum
FROM count
GROUP BY year( date )
ORDER BY date DESC



es lag ja vor mir ;-)

Danke

MySQL, soll nach Jahren zusammenzählen, klappt nur tageweise

Der folgende Beitrag wurde am 04. 11. 2010, 11:24 Uhr von Vinzenz Mai veröffentlicht.

Hallo Sascha,

> aber so wie ich es mache sortiert er es mir nach dem ganzen Datum und nicht nach Jahren! Kann mir jemand sagen wa sich da wiede rmal falsch mache?

> SELECT DATE_FORMAT( date, '%Y' ) AS datum, count( * ) AS zugriffe
> FROM count
> GROUP BY date( date )
> ORDER BY date DESC


Du möchtest also offensichtlich nach der Spalte gruppieren, die Du "datum" genannt hast. Die Verwendung von Aliasnamen in der GROUP-BY-Klausel ist erlaubt. Warum machst Du das nicht?


Freundliche Grüße

Vinzenz

MSQL, soll nach Jahren zusammenzälen, klappt nur Tage weise

Der folgende Beitrag wurde am 04. 11. 2010, 11:39 Uhr von dedlfix veröffentlicht.

Hi!

> [code lang=php]SELECT DATE_FORMAT( date, '%Y' ) AS datum, count( * ) AS zugriffe

Wenn du das Jahr haben möchtest, solltest du die dafür spezialisierte Funktion YEAR() verwenden, dann weiß MySQL sofort, was du haben willst und muss nicht erst den Formatstring auswerten.

> GROUP BY date( date )

Und über das YEAR(date) kannst du auch gruppieren

> ORDER BY date DESC

Da MySQL bei einer Gruppierung gleichzeitig sortiert, reicht es, die Sortierrichtung der GROUP-BY-Klausel mitzugeben.


Lo!

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4