Mailinglisten-Archive |
> Michael Borchers schrieb: >>> 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;( > > SQL ist eine Abfragesprache - keine Ausgabeformatiersprache ... ;-) Das war auch nur zur Verdeutlichung, wie die Row aus dem Result später zusammengesetzt sein soll;) > > wenn du es wirklich unbedingt in der Datennank lösen willst, brauchst du > entweder PROCEDUREs oder total verschachtelte JOINS und IF > Dann warte ich auf MySQL 5.1 ;) > > und außerdem bezweifle ich das du mit deinem "gigantischen Query" obiges > Ergebnis erhalten hast ... In der Tat habe ich nur alle einzelnen COUNT()s bekommen, keine einzelnen Rows mit Datum:( Den Rest habe ich dann mit php aufgelöst. > > -- > Sebastian Danke!
php::bar PHP Wiki - Listenarchive