08. februar 2001 - 22:28Der er
5 kommentarer og 1 løsning
Sql problem
Jeg har en række ID\'er i en kollone som varierer i antal. Jeg skal dog altid bruge den højeste, den næsthøjeste og den tredje højeste. Dog ikke i samme udtræk så fx top 3 kan ikke bruges.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Lav en forespørgsel, der giver dig alle records undtagen den med den højeste ID. Den record der har den højeste ID i delresultatet, er så næsthøjest ialt.
strsql = \"select * from tabel where IDgal2 = \" & rs(\"idgal\") & \" and id = ( select max(ID) from ( select ID from tabel where ID <> (select max(ID) from tabel)))\"
men hvordan vil du så gøre det med den tredjeøverste id?
jeg har prøvet dette: strsql = \"select * from tabel where IDgal2 = \" & rs(\"idgal\") & \" and id = ( select max(ID) from ( select ID from tabel where ID <> (select top 2 (id) from tabel)))\"
det giver denne fejl: Microsoft OLE DB Provider for ODBC Drivers fejl \'80004005\' [Microsoft][ODBC Microsoft Access Driver] At most one record can be returned by this subquery
Jeg fortsætter lige i min egen dialekt, det ser jo ud til at du sagtens kan oversætte til noget forståeligt:
select * from tabel where ID = ( select max(ID) from ( select ID from tabel where ID <> ( select max(ID) from ( select ID from tabel where ID <> ( select max(ID) from tabel ) ) ) and ID <> ( select max(ID) from tabel ) ) )
Udvælger alle tupler fra den post hvor ID er trediehøjest. Trediehøjeste ID er den højeste ID blandt alle ID undtagen den næsthøjeste og den højeste. Næsthøjeste ID er den højeste ID blandt alle ID undtagen den højeste.
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.