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) >>> } >>> } >> >> was spricht gegen: >> >> SELECT >> DAYOFMONTH(`date`), >> `status`, >> COUNT(`foo`) AS `count` >> FROM >> `bar` >> WHERE >> YEARMONTH(`date`) = [yyyymm] >> AND >> `status` IN ([die gewünschten Zustände, oder alle?]) >> GROUP BY >> DAYOFMONTH(`date`), >> `status` >> >> >> eventuell noch mit ROLLUP wenn benötigt > > Hi Sebastian! > Mit Deiner Query bekomme ich ja schon einmal jeden einzelnen Tag als > einzelne Reihe - perfekt! Tag und Status tag - status - count 01 1 32 01 3 16 02 1 18 03 2 10 ... sprich: 32 mal Status 1 am Tag 1 16 mal Status 3 am Tag 1 ... wolltest du das nicht? > Jetzt müsste ich allerdings den COUNT auf jeden einzelnen Status > anwenden können. ? nicht pro Tag? > Bis jetzt erhalte ich ja nur alle IDs insgesamt in dem Feld 'count'. ne, die Anzahl der ID's pro Tag und Status > Sprich, ich muss wissen, wieviele der Einträge zu jedem Datum (also jede > Reihe) yyyy-mm-dd > den Status 1, 2, 3, 4 und 5 haben => yepp, genau das macht es Wenn du immer alle Zustände (status) haben willst dann brauchst du die Zeile "AND `status` ..." natürlich nicht aber das GROUP BY muss bleiben wie es ist mit Datum und Status > COUNT ... WHERE status = 1 und COUNT ... WHERE status = 2 usw. > > Und das kriege ich nicht in einer Query gelöst:( du vielleicht nicht ... ich schon ... ;-) -- Sebastian
php::bar PHP Wiki - Listenarchive