Toon posts:

twee kolommen in een result variabele gebruiken.

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik wil graag een query uitvoeren en een array krijgen met de volgende data,
namelijk

$array[id] = datum;

$array[10] = '11-11'2006';
$array[11] = 1;

dit om een maandkalender dag voor dag op te bouwen. (ik weet dat er veel gratis scripts hiervoor zijn, ik wil deze alleen graag zelf schrijven). ik heb dus de volgende tabel,

evenementen

id titel startdatum einddatum link

hij moet dus op 3 items selecteren
* als iets in bv feb. start (startdate) of plaatsvind (dan is einddatum leeg).
* als iets in bv feb. stop.
* als iets voor feb. start en hierna eindigt.

nu heb ik zelf de volgende query in elkaar geklutst (werk wel).

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
SELECT id, titel,
IF ( 
  EXTRACT( YEAR_MONTH FROM startdate ) =200602, startdate,
      IF ( 
        EXTRACT( YEAR_MONTH FROM enddate ) =200602, enddate, TRUE
      )
) AS datum

FROM deforel_kalender

WHERE (

EXTRACT(
YEAR_MONTH FROM startdate ) =200602

OR 

EXTRACT(
YEAR_MONTH FROM enddate ) =200602
)

OR ( 

EXTRACT(
YEAR_MONTH FROM startdate ) <200602

AND 

EXTRACT(
YEAR_MONTH FROM enddate ) >200602

)

LIMIT 0 , 30


De ene keer is in het resultaat de datum de einddatum, de andere keer dus de startdatum en anders is die 1. (vind dus in de hele maand plaats). ik heb lang lopen spelen in na lang prutsen ben ik tot de volgende query gekomen. Dit moet toch veel beter kunnen?.

Nu zitten hier veel dezelfde items in en weet ik wel zeker dat dit geen nette manier is. dit moet makkelijker kunnen, heeft iemand hier een idee over.

[ Voor 4% gewijzigd door Verwijderd op 07-04-2006 15:42 ]


Verwijderd

Ik heb ooit ook zoiets gedaan, met entries die altijd een begin EN einddatum hadden ( al is die hetzelfde ). Ik heb toen eerst alle mogelijkheden uitgetekend. dus een staatje gemaakt met blokjes die de entries representeerden, en lijnen die de te zoeken begin/einddatums voorstelden. uiteindelijk kwam ik dan uit op het volgende....je kunt beter selecteren op wat je NIET wilt hebben, dan wat je WEL wilt hebben. Je wilt dus NIET de entries hebben die eindigen voor je begindatum, en NIET entries die beginnen NA je einddatum....alles wat je overhoud valt dan geheel of gedeeltelijk in de gewenste periode.

code:
1
2
3
4
5
6
Select
  *
from
  entries
where
  not ((Entry_Einddatum < Selectie_Begindatum) or ( Selectie_Einddatum < Entry_Begindatum ))