|
| SQL problemstilling Fra : Bo Meyer |
Dato : 04-11-02 13:03 |
|
Hej,
jeg er stødt på en SQL problemstilling jeg ikke kan gennemskue.
Datasæt A:
startdato, slutdato
01-03-2002, 05-03-2002
10-03-2002, 12-03-2002
Datasæt B:
27-02-2002
28-02-2002
01-03-2002
02-03-2002
03-03-2002
04-03-2002
Jeg vil nu gerne selectere alle poster fra datasæt B som ikke er mellem en af
start- og slutdatoerne fra datasæt A.
Jeg kan simpelthen ikke finde en løsning. Kan jeg finde nogen hjælp?
mvh. Bo
| |
Jakob Andersen (04-11-2002)
| Kommentar Fra : Jakob Andersen |
Dato : 04-11-02 13:21 |
|
"Bo Meyer" <bmeyer@relief.dk> wrote
> jeg er stødt på en SQL problemstilling jeg ikke kan gennemskue.
>
> Datasæt A:
>
> startdato, slutdato
> 01-03-2002, 05-03-2002
> 10-03-2002, 12-03-2002
>
> Datasæt B:
>
> 27-02-2002
> 28-02-2002
> 01-03-2002
> 02-03-2002
> 03-03-2002
> 04-03-2002
>
> Jeg vil nu gerne selectere alle poster fra datasæt B som ikke er mellem en
af
> start- og slutdatoerne fra datasæt A.
Er det ikke blot noget ala dette du leder efter?
SELECT .....
FROM ....
WHERE B.Dato >= A.StartDato AND B.Dato <= A.SlutDato
--
Jakob Andersen
| |
Bo Meyer (04-11-2002)
| Kommentar Fra : Bo Meyer |
Dato : 04-11-02 13:34 |
|
Jakob Andersen wrote:
> "Bo Meyer" <bmeyer@relief.dk> wrote
>
>>jeg er stødt på en SQL problemstilling jeg ikke kan gennemskue.
>>
>>Datasæt A:
>>
>>startdato, slutdato
>>01-03-2002, 05-03-2002
>>10-03-2002, 12-03-2002
>>
>>Datasæt B:
>>
>>27-02-2002
>>28-02-2002
>>01-03-2002
>>02-03-2002
>>03-03-2002
>>04-03-2002
>>
>>Jeg vil nu gerne selectere alle poster fra datasæt B som ikke er mellem en
>
> af
>
>>start- og slutdatoerne fra datasæt A.
>
>
> Er det ikke blot noget ala dette du leder efter?
>
> SELECT .....
> FROM ....
> WHERE B.Dato >= A.StartDato AND B.Dato <= A.SlutDato
Nej!
Slut resultatet skal blive
27-02-2002
28-02-2002
mens dit forslag vil fremvise hele datasæt B fordi 01-03-2002 i datasæt B ikke
er mellem 10-03-2002 og 12-03-2002.
Det er jo netop kernen i problemstillingen.
mvh. Bo
| |
Jakob Andersen (04-11-2002)
| Kommentar Fra : Jakob Andersen |
Dato : 04-11-02 13:42 |
|
"Bo Meyer" <bmeyer@relief.dk> wrote
> Nej!
Rolig nu.
> Slut resultatet skal blive
> 27-02-2002
> 28-02-2002
>
> mens dit forslag vil fremvise hele datasæt B fordi 01-03-2002 i datasæt B
ikke
> er mellem 10-03-2002 og 12-03-2002.
Du vil have alle datoer fra tabel B der IKKE er i nogle af datointervallerne
i tabel A, er det korrekt forstået?
--
Jakob Andersen
| |
Bo Meyer (04-11-2002)
| Kommentar Fra : Bo Meyer |
Dato : 04-11-02 13:58 |
|
> Du vil have alle datoer fra tabel B der IKKE er i nogle af datointervallerne
> i tabel A, er det korrekt forstået?
Lige præcis!
mvh. Bo
| |
Jens Gyldenkærne Cla~ (04-11-2002)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 04-11-02 14:21 |
|
Bo Meyer skrev:
> Jeg vil nu gerne selectere alle poster fra datasæt B som ikke
> er mellem en af start- og slutdatoerne fra datasæt A.
SELECT <feltliste>
FROM B
WHERE NOT EXISTS
(SELECT 1 FROM A
WHERE B.dato BETWEEN A.startdato AND A.slutdato)
Du har ikke skrevet hvilket databasesystem der er tale om - det er
vist ikke alle der understøtter exists. Ovenstående burde virke i
MSSQL.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma
(rettelser modtages gerne i dk.kultur.sprog)
| |
Peter Lykkegaard (04-11-2002)
| Kommentar Fra : Peter Lykkegaard |
Dato : 04-11-02 15:01 |
|
Som svar på skriblerier nedfældet af Jens Gyldenkærne Clausen :
> Bo Meyer skrev:
>
>> Jeg vil nu gerne selectere alle poster fra datasæt B som ikke
>> er mellem en af start- og slutdatoerne fra datasæt A.
>
> SELECT <feltliste>
> FROM B
> WHERE NOT EXISTS
> (SELECT 1 FROM A
> WHERE B.dato BETWEEN A.startdato AND A.slutdato)
>
> Du har ikke skrevet hvilket databasesystem der er tale om - det er
> vist ikke alle der understøtter exists. Ovenstående burde virke i
> MSSQL.
Det virker fint i MSSQL - er lige testet
mvh/Peter Lykkegaard
| |
Bo Meyer (05-11-2002)
| Kommentar Fra : Bo Meyer |
Dato : 05-11-02 12:01 |
|
Jens Gyldenkærne Clausen wrote:
> SELECT <feltliste>
> FROM B
> WHERE NOT EXISTS
> (SELECT 1 FROM A
> WHERE B.dato BETWEEN A.startdato AND A.slutdato)
Hvor kan man stirre sig blind på et problem. Du har helt ret (jeg anvender
Oracle og den håndterer også subselects fint). Tak for hjælpen.
Mvh. Bo
| |
|
|