Re: MySQL inline view med statiske data
  Home FAQ Contact Sign in
dk.edb.database only
 
Advanced search
POPULAR GROUPS

more...

 Up
Re: MySQL inline view med statiske data         

Group: dk.edb.database · Group Profile
Author: Kristian Damm Jensen
Date: Apr 22, 2008 06:22

Michael Zedeler wrote:
> Morten wrote:
>> Hej, jeg har en applikation hvor brugeren vælger en dato range, fex.
>> 2008-04-01 til 2008-04-03. Denne benyttes til at tælle antal events
>> der var "åbne" på den givne dato, altså for hver dato some_date
>> findes events hvor "some_date BETWEEN events.start_date AND
>> events.end_date" Udfordringen er, at få datoerne sendt til MySQL, her er
>> en måde:
>>
>> SELECT date_range.some_day, COUNT(*)
>> FROM events, (
>> SELECT DATE('2008-04-01') AS some_day FROM DUAL UNION ALL
>> SELECT DATE('2008-04-02') FROM DUAL UNION ALL
>> SELECT DATE('2008-04-03') FROM DUAL
>> ) AS date_range
>> WHERE date_range.some_day BETWEEN events.start_date AND
>> events.end_date
>> GROUP BY 1
>
> Hvorfor ikke bare noget i denne stil?
>
> select count(*), date(events.start_date)
> from events
> where events.start_date between '2008-04-01' and '2008-04-03'
> group by date(events.start_date)
>
> Så kan du godt nok få huller med dage uden begivenheder, men dem må du
> fylde op selv.

Hvilket i øvrigt er relativt nemt:

create table dates(date datetime not null);
insert into dates values('2008-01-01');
insert into dates values('2008-01-02');
insert into dates values('2008-01-03');
...

select date(d.date), isnull(events.start_date, 0; count(*))
from dates d
left join events
on d.date = events.start_date
and d.date between '2008-04-01' and '2008-04-03'
group by date(events.start_date)

Jeg er ikke inde i detaljerne i MySQL. Tanken med isnull her er at hvis
events.start_date er NULL returneres 0, ellers antallet af poster. Dette fif
er nødvendigt fordi det ellers ikke er muligt at skelne mellem en dato der
ikke modsvares af nogen forekomst i events og en der svarer til netop én
post i events.

--
Venlig hilsen /Best regards
Kristian Damm Jensen
no comments
diggit! del.icio.us! reddit!