Mailinglisten-Archive |
> Michael Borchers schrieb: >> Aha! Ich hab es nun etwas "unschön" probiert, in dem ich die Query mit >> php >> zusammensetze. Das ergibt eine >> gigantische Query bestehend aus diversen COUNT()s. Die Abfrage dauert >> über >> phpMyAdmin um die 5 Sekunden. >> >> Die Query setzte sich ungefährt wiefolgt zusammen: >> for(alle Tage t des jeweiligen Monats) { >> for(Status s, 5 an der Zahl) { >> SELECT >> COUNT(foo) FROM bar WHERE DAYOFMONTH(date) = t >> AND status = s >> AS (individueller Name wie count_s_t) >> } >> } Hier wie versprochen ein paar Datensätze: history_id history_status_id history_date history_description contacts_id 14760 1 2007-08-01 08:00:00 Status 1, 1.8. 1 14761 1 2007-08-01 08:00:00 Status 1, 1.8. 2 14762 2 2007-08-01 08:00:00 Status 2, 1.8. 1 14763 3 2007-08-01 08:00:00 Status 3, 1.8. 1 14764 3 2007-08-03 08:00:00 Status 3, 3.8. 2 14765 3 2007-08-03 08:00:00 Status 3, 3.8. 1 14766 5 2007-08-03 08:00:00 Status 5, 3.8. 1 Die Schleife soll nun für alle 31 August-Tage wiefolgt durchlaufen: (optisch für php dargestellt, wie gesagt ist die SQL Klausel Lösung gesucht;) ) for($d=1;$d<32;$d++) { for($s=1;$s<6;$s++) { SELECT COUNT(history_id) FROM history WHERE 1 AND DAYOFMONTH(history_date) = $d AND MONTH(history_date) = 8 AND YEAR(history_date) = 2007 AND history_status_id = $s } } Dabei soll für jeden Tag eine Row ausgegeben werden. In jeder Row stehen dann die COUNT()s für alle Status. Optisch: Datum COUNT status 1 COUNT status 2 COUNT status 3 COUNT status 4 COUNT status 5 01.08.2007 2 1 1 0 0 02.08.2007 0 0 0 0 0 03.08.2007 0 0 2 0 1 Das habe ich so trotz Tipps noch nicht hingekriegt;(
php::bar PHP Wiki - Listenarchive