|
| Oracle: Mange unions Fra : Martin M. Pedersen |
Dato : 03-07-07 11:06 |
|
Hejsa,
Jeg har en table med en foreign key 'customer' og fem dato felter.
Jeg har brug for at finde alle forskellige datoer for en bestemt
'customer' over de fem
dato felter.
Kan flg. skrives bedre, hurtigere, smartere ?
SELECT post_1_date FROM tickets t, customers c WHERE
t.customer=c.id
AND
c.name='$customer'
AND
post_1_date>=to_date('$start','YYYY-MM-DD')
AND
post_1_date<=to_date('$end','YYYY-MM-DD')
UNION
SELECT post_2_date FROM tickets t, customers c WHERE
t.customer=c.id
AND
c.name='$customer'
AND
post_2_date>=to_date('$start','YYYY-MM-DD')
AND
post_2_date<=to_date('$end','YYYY-MM-DD')
UNION
SELECT post_3_date FROM tickets t, customers c WHERE
t.customer=c.id
AND
c.name='$customer'
AND
post_3_date>=to_date('$start','YYYY-MM-DD')
AND
post_3_date<=to_date('$end','YYYY-MM-DD')
UNION
SELECT post_4_date FROM tickets t, customers c WHERE
t.customer=c.id
AND
c.name='$customer'
AND
post_4_date>=to_date('$start','YYYY-MM-DD')
AND
post_4_date<=to_date('$end','YYYY-MM-DD')
UNION
SELECT post_5_date FROM tickets t, customers c WHERE
t.customer=c.id
AND
c.name='$customer'
AND
post_5_date>=to_date('$start','YYYY-MM-DD')
AND
post_5_date<=to_date('$end','YYYY-MM-DD')
/
Mvh
Martin
| |
Kristian Damm Jensen (03-07-2007)
| Kommentar Fra : Kristian Damm Jensen |
Dato : 03-07-07 13:21 |
|
Martin M. Pedersen wrote:
> Hejsa,
> Jeg har en table med en foreign key 'customer' og fem dato felter.
> Jeg har brug for at finde alle forskellige datoer for en bestemt
> 'customer' over de fem
> dato felter.
>
> Kan flg. skrives bedre, hurtigere, smartere ?
Nej, ikke med mindre du har mulighed for og er villig til at omstrukturere
databasen. Uden at kende de præcise indhold af de fem datoer er det svært at
sige med sikkerhed, men det virker som om det ville være en god idé at lægge
dem ud i en særskilt tabel.
<snip søgning>
--
Venlig hilsen /Best regards
Kristian Damm Jensen
| |
Leif Neland (10-07-2007)
| Kommentar Fra : Leif Neland |
Dato : 10-07-07 08:48 |
|
"Martin M. Pedersen" <traxplayer@gmail.com> skrev i en meddelelse
news:468a1fc6$0$176$edfadb0f@dread11.news.tele.dk...
> Hejsa,
> Jeg har en table med en foreign key 'customer' og fem dato felter.
> Jeg har brug for at finde alle forskellige datoer for en bestemt
> 'customer' over de fem
> dato felter.
>
> Kan flg. skrives bedre, hurtigere, smartere ?
>
>
> SELECT post_1_date FROM tickets t, customers c WHERE
> t.customer=c.id
> AND
> c.name='$customer'
> AND
> post_1_date>=to_date('$start','YYYY-MM-DD')
> AND
> post_1_date<=to_date('$end','YYYY-MM-DD')
>
> UNION
... snip...
Jeg ville ihvertfald tage customers ud af det, så jeg først fandt c.id, og
brugte den værdi i union'en direkte, i stedet for $customer
Leif
| |
|
|