Avatar billede lone_a_p Praktikant
12. september 2011 - 20:05 Der er 3 kommentarer og
1 løsning

SELECT datoer som IKKE er i tabel?

Kære eksperter,

Jeg har fx en tabel "mintabel" med rows:
1, 2011-01-01
2, 2011-01-02
3, 2011-01-04
4, 2011-01-06

Det, jeg gerne vil have valgt ud, er de datoer, som IKKE findes i "mintabel", altså noget lignende:

SELECT alle datoer WHERE (dato BETWEEN "2011-01-01" AND "2011-01-06") AND IKKE FINDES i mintabel.

Resultatet jeg søger er følgende:
, 2011-01-03
, 2011-01-05

Kan dette lade sig gøre?

Jeg har overvejet at oprette en ny tabel med en masse datoer i et bestemt interval og sammenligne (altså en WHERE LEFT/RIGHT JOIN IS NULL). Men typisk er der nogle effektive funktioner :)

Håber at en herinde har en løsning på ovenståede.
Avatar billede majbom Novice
12. september 2011 - 20:15 #1
ved sq ikke om der er en funktion der kan det - umiddelbart tror jeg det ikke.

et alternativ kunne være - som du næsten selv er inde på - at oprette en tabel med alle datoer (også dem der er i din oprindelige tabel) og lave noget a la:

SELECT * FROM alledatoer WHERE dato NOT IN(SELECT dato FROM mintabel)
Avatar billede lone_a_p Praktikant
12. september 2011 - 21:28 #2
Tak, følgende virker og bliver benyttet :)

Ex:

SELECT * FROM alledatoer WHERE (dato between "2011-01-01" and "2011-01-31") AND dato NOT IN(SELECT dato FROM mintabel WHERE dato BETWEEN "2011-01-01" and "2011-01-31")

Performance er god.

splazz> vil du sende et svar, så jeg kan give point :)
Avatar billede majbom Novice
12. september 2011 - 21:31 #3
kommer her :)
Avatar billede majbom Novice
14. september 2011 - 19:32 #4
tfp :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester