/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
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


Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste