ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
495
495
EMPFEHLEN
-
27.09.10 15:44 #1FlaverSaver Tutorials.de Gastzugang
Hallo,
ich habe eine SQL Abfrage, die mir aus einer Tabelle alle Monate mit der Anazhl der Einträge ausgibt.
Code :1 2 3
SELECT DATE_FORMAT( datum, "%m.%Y" ) AS name, COUNT(MONTH(datum)) AS size FROM tabelle GROUP BY DATE_FORMAT( datum, "%Y%m" ) asc
Nun kann es ja vorkommen, das es zu einem Monat keine Einträge gibt. Nun möchte ich gerne das diese Monate auch ausgegebn werden, dann halt bei "size" 0.
Beispiel:
02.2010
03.2010
06.2010
08.2010
Somit fehlen vom ersten Monat bis 'jetzt' also 09.2010 folgende Monate:
04.2010
05.2010
07.2010
09.2010
Nun möchte ich aber eine Liste haben, in der alle Monate zusammen stehen. Bei den 'leeren' Monaten halt bei "size" 0.
Ist das irgendwie möglich, oder muss ich dafür etwas mit PHP basteln?
mfg
Philip
-
Du meinst sowas?
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
SELECT month_year_string, COUNT(Datum) AS SIZE FROM (SELECT CONCAT(LPAD(node_month, 2, '0'), '.', node_year) AS month_year_string, CONCAT(node_year, LPAD(node_month, 2, '0')) AS group_by_string FROM (SELECT 1 AS node_month UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12) AS months_list, (SELECT DISTINCT YEAR(Datum) AS node_year FROM tabelle) AS year_list ) AS month_year_list LEFT JOIN tabelle AS my_dates ON month_year_list.group_by_string = DATE_FORMAT(my_dates.Datum, "%Y%m" ) GROUP BY group_by_string
Ich erstelle zuerst eine Monatsliste (month_list)
Code sql:1 2 3 4 5 6 7 8 9 10 11 12
SELECT 1 AS node_month UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12
Dann erstelle ich eine Liste mit allen Jhren die in der Tabelle vorhanden sind (year_list)
Diese 2 kombiniere ich ohne Argumente. Ergo wird jede Kombination Monat-Jahr zusammengestellt. Aus dieser Kombination erstelle ich 2 Felder. Eines mit der Monats-Anzeige (month_year_string), das andere mit einem String den wir für den GROUP BY() und den ON-Teil des zukünftigen JOIN gebrauchen können (group_by_string)Code sql:1
SELECT DISTINCT YEAR(Datum) AS node_year FROM tabelle
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
SELECT CONCAT(LPAD(node_month, 2, '0'), '.', node_year) AS month_year_string, CONCAT(node_year, LPAD(node_month, 2, '0')) AS group_by_string FROM (SELECT 1 AS node_month UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12) AS months_list, (SELECT DISTINCT YEAR(Datum) AS node_year FROM tabelle) AS year_list
Diese Datenmenge verknüpfe ich nun mit der Tabelle mittels eines LEFT_JOIN. Das ganze noch Gruppieren und den COUNT() auf ein Feld der Tabelle setzen, da diese bei keinen Einträgen auf NULL steht und NULL bei COUNT() nicht mitgezählt wird.Geändert von Yaslaw (27.09.10 um 16:16 Uhr)
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
27.09.10 18:11 #3FlaverSaver Tutorials.de Gastzugang
Boa, der Wahnsinn!
Das gibts ja gar nicht. Da wäre ich echt im Leben nicht drauf gekommen!
Wahnsinn, ich bin echt begeistert!
Vielen Vielen Dank!
Philip
Ähnliche Themen
-
SQL Einträge aus verschiedenen Tabellen zählen auch null
Von red2k im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 19.10.07, 19:39 -
MySQL Einträge zählen
Von MM2410 im Forum Relationale DatenbanksystemeAntworten: 6Letzter Beitrag: 31.03.05, 21:12 -
MySQL | 'date'-Spalte | Einträge nach Monaten sortiert zählen
Von 27apricot im Forum PHPAntworten: 3Letzter Beitrag: 26.11.04, 21:30 -
Gleiche Einträge in einer Spalte zählen und absteigend ausgeben
Von Eiszwerg im Forum PHPAntworten: 2Letzter Beitrag: 22.01.04, 07:17 -
Einträge in mySQL-DB zählen und Anzahl mit php ausgeben
Von Eiszwerg im Forum PHPAntworten: 3Letzter Beitrag: 28.11.02, 12:01





Zitieren

Login





