Avatar billede andersjo Nybegynder
09. juni 2006 - 10:06 Der er 6 kommentarer og
1 løsning

finne records mellom to datoer

Hei.

Jeg har en tabell med et felt for ankomstdato og et for avreisedato. Jeg ønsker å telle antall records for hver dag i en tidsperiode.

Ex:
periode: 1. juni til 5. juni
record1: ankomst 2. juni og avreise 4. juni
record2: ankomst 1. juni og avreise 3. juni

Svar:
1. juni -> 1 record
2. juni -> 2 records
3. juni -> 2 records
4. juni -> 1 record
5. juni -> 0 records

Jeg trenger en SQL-settning for å finne disse svarene.
Avatar billede beef12 Nybegynder
09. juni 2006 - 12:58 #1
I disse tilfælde har jeg altid løst problemet ved at oprette en tabel som indeholder datoer fra f.eks. år 2000 til 2010 (dette kan du variere efter behov).
Så du får en tabel som indeholder kolonnen ID og DATO (lad og kalde den tbl_dates).

Derefter antager jeg har du har en tabel (lad os kalde den tbl_periods), som vel nok indeholder kolonnerne: ID, AFREJSE_DATO og ANKOMST_DATO.

Her kommer så select'en:

select count(p.ID)
from
tbl_dates as d
left join tbl_periods as p
on d.DATO >= p.AFREJSE_DATO
and d.DATO <= p.ANKOMST_DATO
where
d.DATO >= '2006-06-01' and
d.DATO <= '2006-06-05'

Håber det kan hjælpe dig videre...
Avatar billede andersjo Nybegynder
12. juni 2006 - 14:03 #2
Dette ser ut til å fungere, men jeg tror du har byttet om på AFREJSE_DATO og ANKOMST_DATO.

Slik fungerer det i hvertfall bedre for meg for å finne antall deltagere en spesiell dag:

select count(p.ID) from tbl_dates as d
left join tbl_periods as p
on d.DATO >= p.ANKOMST_DATO
and d.DATO <= p.AFREJSE_DATO
where
d.DATO >= '2006-06-02' and
d.DATO <= '2006-06-02'
Avatar billede andersjo Nybegynder
12. juni 2006 - 14:04 #3
Legg inn et svar, så skal du få poeng...
Avatar billede beef12 Nybegynder
12. juni 2006 - 19:32 #4
Du har fuldstændig ret - datoerne skulle naturligvis have været byttet om.
Hvad betyder egentlig "Slik"? :-)
Avatar billede andersjo Nybegynder
12. juni 2006 - 19:46 #5
"Slik" betyr sådan eller på denne måte (usikker på hva dere sier på dansk). På engelsk ville jeg sagt like this/in this way
Avatar billede beef12 Nybegynder
12. juni 2006 - 20:05 #6
Ahh ok. På dansk vil man nok sige "Således" eller "På denne måde" :-)

Hvordan populerede du din tbl_dates tabel? Jeg plejer selv at anvende Excel dato funktionerne til at generere disse og derefter gemme det som .csv og til sidst importere det i tabllen.
Avatar billede andersjo Nybegynder
13. juni 2006 - 08:15 #7
Jeg lagde kun en tabell for oktober 2006 siden det er det aktuelle tidsrommet. Så jeg gjorde jobben manuelt. Men skal man legge inn datoer for mange år ville jeg nok gjort som du. Laget datoene i ex. Excell og importert inn i tabellen. Men det er ikken en problemstilling jeg har tenkt så mye på...
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