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