phpbar.de logo

Mailinglisten-Archive

[php] OT: MySQL for / while Schleife

[php] OT: MySQL for / while Schleife

Sebastian Mendel lists at sebastianmendel.de
Fre Jul 27 12:09:26 CEST 2007


Michael Borchers schrieb:
>>> 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
> 
> Ja, aber durch den GROUP BY erhalte ich immer nur jeden Tag einmal;)

ich weis ja nciht was du machst, aber bei erhalte ich jeden Tag so oft wie
verschieden Zustände (status) ich habe an diesem Tag ...

CREATE TABLE IF NOT EXISTS `bar` (
  `date` date NOT NULL,
  `status` int(11) NOT NULL,
  `foo` int(11) NOT NULL,
  KEY `date` (`date`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `bar` VALUES
('2007-07-27', 2, 0),
('2007-07-27', 1, 0),
('2007-07-27', 3, 0),
('2007-07-27', 1, 0),
('2007-07-28', 3, 0),
('2007-07-28', 4, 0),
('2007-07-28', 3, 0),
('2007-07-28', 3, 0),
('2007-07-29', 2, 0),
('2007-07-30', 1, 0);

SELECT
    DAYOFMONTH(`date`) AS `day`,
    `status`,
    COUNT(`foo`) AS `count`
FROM
    `bar`
GROUP BY
    DAYOFMONTH(`date`),
    `status`;

day 	status 	count
27	1	2	
27	2	1	
27	3	1	
28	3	3	
28	4	1	
29	2	1	
30	1	1

php::bar PHP Wiki   -   Listenarchive