Min virker både i Access og DB2. Rimelig hurtig endda.
Men spørgsmålet er også, om det er den næsthøjeste pris, du er interesseret i, eller det er den row som følger efter den row med højeste pris? Det er da det samme, kunne du måske tænke. Men det er det ikke. Hvis der er to rows, som indeholder den samme (høje) pris, vil idanielsens (og i forlængelse heraf arne_v's) metode returnere den samme pris, da deres metode vil returnere den ROW, der logisk efterfølger den med den højeste pris (også selvom denne faktisk har samme pris). Min metode vil derimod returnere den næsthøjeste PRIS. Sådan som jeg læste dit spørgsmål, må det være det rigtige - eller hvad siger du?
Selvfølgelig, hvis der ikke er to rows med samme højeste pris, vil resultatet blive det samme med begge metoder.
Yderligere har min metode den fordel, at den vil kunne porteres til andre databaser, hvilket ikke er tilfældet for den anden, idet TOP instruktionen mig bekendt kun forstås af Microsoft produkter (MS Access og MS SQL).
Forøvrigt - hvis du ønsker mere end bare den næsthøjeste pris returneret, men også andre felter er det naturligvis nødvendigt med en lille udvidelse:
SELECT * FROM varer WHERE pris = ( SELECT MAX(pris) FROM varer WHERE pris < (SELECT MAX(pris) FROM varer) )
Og hvad brugte du så? Var ingen af vore løsninger tilfredsstillende? Tilbagemelding ville være ønskelig...
Synes godt om
Ny brugerNybegynder
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.