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