On Apr 22, 5:03 pm, Michael Zedeler <mich...@zedeler.dk> wrote:
> Morten wrote:
> > On Apr 22, 7:59 am, Michael Zedeler <mich...@zedeler.dk> 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.
>
> > Det er altid rart med input fra dig så tak for det. Jeg har måske fået
> > tænkt mig selv op i en krog, men jeg er ikke helt sikker på at det du
> > skriver dækker.
>
> > Det der driver dato-intervallet, er brugerens input range, ikke event
> > start/stop. Så hvis en bruger søger i intervallet 2008-04-01 til
> > 2008-04-03, og der er events med start_date 2008-03-31 og end_date
> > 2008-04-02 så kommer de ikke med i din query så vidt jeg kan vurdere..
>
> Så du er interesseret i begivenheder der også ligger "hen over"
> intervallet. I så fald kan du bare skrive sådan her:
>
> SELECT *
> FROM events
> WHERE NOT (events.end < '2008-03-31' OR events.start > '2008-04-03)
>
> Mvh. Michael.
Jeg forstår det ikke. Jeg kan godt se, at den query angiver hvilke
events der er åbne i intervallet, men hvordan man kommer derfra til at
se hvor mange der er åbne på de dato'er der ligger indenfor
brugerintervallet er det svære skridt. Jeg har dimest rundt med det
http://www.pastie.org/185411 - og jeg har været ude af ret mange
tangenter (self joins, subselects osv.) i et forsøg på at anvende
ovenstående query som fundament, men hidtil uden held.
Der kommer en update fra mig hvis jeg nogensinde finder en løsning.
Ellers er andre meget velkomne til at kaste et blik på ovenstående
pastie.
Mvh.
Morten