Avatar billede razser Nybegynder
25. februar 2006 - 18:39 Der er 18 kommentarer

Vælg næsthøjeste dato

Jeg har en database med en id, et navn-felt og et datofelt.
Jeg skal have udvalgt den næsthøjeste dato. Hvordan konstruerer
jeg SQL-sætningen?

ID    Navn    Dato
1      Hans    12-11-05 12:34:05
3      Peter    23-02-06 14:37:09
5      Per      22-02-06 23:08:08
6      Lise    23-02-06 12:37:09

Her skal den således vælge følgende:
6      Lise    23-02-06 12:37:09
Avatar billede thesurfer Nybegynder
25. februar 2006 - 19:20 #1
Du kan gøre sådan her:

sql = "select * from TabellensNavn order by DatoFeltet desc"
set rs = conn.execute(sql)
if rs.bof or rs.eof then
  response.write "Ingen poster med de valgte kriterier"
else
  do while not rs.eof
    rs.movenext ' går til næste post, som er "næstesidste post"
   
    ' gør hvad du vil her

    exit do
  loop
end if

Men jeg tror at det er en god ide, at checke med rs.count..

/theSurfer
Avatar billede morhan Novice
25. februar 2006 - 19:26 #2
Access database? En forsøg på at gøre det hele på én gang:

SELECT TOP 1 * FROM tabel WHERE id NOT IN (SELECT TOP 1 id FROM tabel ORDER BY dato DESC) ORDER BY dato DESC
Avatar billede thesurfer Nybegynder
25. februar 2006 - 19:37 #3
Egengtligt kunne man lave en TOP 2, og bruge en rs.movenext.. man behøver ikke "*"..

/theSurfer
Avatar billede razser Nybegynder
25. februar 2006 - 19:43 #4
Tak - det er naturligvis også en måde at gøre det på. Jeg ved dog ikke om det
kan lade sig gøre i sql-sætningen, men smid et svar...
Avatar billede razser Nybegynder
25. februar 2006 - 19:50 #5
uhmm, den fra morhan kan jeg ikke få til at virke....
Avatar billede thesurfer Nybegynder
25. februar 2006 - 19:55 #6
razser> Var 25/02-2006 19:43:32 til mig?
Mht det TOP 2:

' Henter de 2 nyeste/største, i "faldende" (DESCending) rækkefølge:
Select TOP 2 from TabellensNavn order by DatoFeltet desc

og så det samme som i 25/02-2006 19:20:08..

/theSurfer
Avatar billede morhan Novice
25. februar 2006 - 19:57 #7
* angiver de kolonner som skal trækkes ud

SELECT TOP 2 FROM
er ikke gyldig syntax
Avatar billede thesurfer Nybegynder
25. februar 2006 - 19:58 #8
Ahh, ja.. Det havde jeg glemt :-)

/theSurfer
Avatar billede razser Nybegynder
25. februar 2006 - 20:03 #9
->thesurfer, ja, - jeg tilføjede dog selv * i "select top2 * "...

Det havde nu været smart med morhans SQL-sætning, men det virker ikke rigtigt...
Avatar billede thesurfer Nybegynder
25. februar 2006 - 20:04 #10
Burde det ikke have været?:

SELECT TOP 1 * FROM tabel WHERE id NOT IN (SELECT TOP 2 id FROM tabel ORDER BY dato DESC) ORDER BY dato DESC

/theSurfer
Avatar billede thesurfer Nybegynder
25. februar 2006 - 20:06 #11
Altså:
1) Poster_1:
(SELECT TOP 2 id FROM tabel ORDER BY dato DESC)
"hent de 2 nyeste, faldende rækkefølge"

2) Poster_2:
SELECT TOP 1 * FROM tabel WHERE id NOT IN Poster_1 ORDER BY dato DESC
"helt den 1 nyeste from tabllen, hvor id ikke er lig id fra Poster_1"

Eller hva'?

/theSurfer
Avatar billede morhan Novice
25. februar 2006 - 20:08 #12
TOP 1 i subselect skal udelukke det højeste id (TOP 2 vil udelukke dem begge)

btw så virker den fint hos mig. Får du syntax fejl?
Avatar billede razser Nybegynder
25. februar 2006 - 20:19 #13
-> morhan: det virker nu (glemte " )...

Så må jeg vel hellere give points til jer begge...
Avatar billede thesurfer Nybegynder
25. februar 2006 - 20:26 #14
Nej, tak.. jeg springer over..
morhans løsning er nok bedre.. :-)

/theSurfer
Avatar billede razser Nybegynder
25. februar 2006 - 20:31 #15
-> morhan, et lille tillægsspørgsmål: Hvad hvis to af de største datoer er ens - så fejler det. Kan man komme ud over dette?
Avatar billede razser Nybegynder
25. februar 2006 - 20:35 #16
-> thesurfer, tak alligevel... ;-)
Avatar billede thesurfer Nybegynder
25. februar 2006 - 20:44 #17
Det var så lidt :-)

/theSurfer
Avatar billede razser Nybegynder
26. februar 2006 - 12:10 #18
-> morhan: tak for hjælpen, du må gerne lægge et svar...
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
Kurser inden for grundlæggende programmering

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