09. marts 2003 - 20:02Der er
15 kommentarer og 1 løsning
Udskriv den højeste i en kolonne.....
Med denne sætning: Set Query = Conn.Execute("SELECT * From tabel Order by point desc")
Kan jeg udskrive hele kolonnen Point, sådan at det felt hvori der er flest point, vil være øverst.... Hvordan kan jeg få den til kun at udskrive det/de felter med flest point. Det skal ikke være ved hjælp af "TOP 4" f.eks. Det skal være sådan, at hvis der kun er et felt, med flest point, så skal det vises, men også hvis der nu er 3 felter med sammen antal point, samt de har flest point..... nogen der forstår mit spørgsmål? :-)
Du kan ikke i Access udvælge en række ud fra max(point), på en bare nogenlunde hurtig måde. (man kan godt, men det er langsomt, og kræver at du ikke har nogen memo-felter)
Så det bedste er at du først åbner tabellen en gang for at finde max værdi. Set Query = Conn.Execute("select max(point) as MaxPoint from tabel") maxPoint=Query.Fields("MaxPoint").Value
og derefter bruger den værdi til at finde de rækker du har brug for. Set Query = Conn.Execute("SELECT * FROM tabel WHERE point" & maxPoint & " Order by kamp_nr ")
mortrr> Helt korrekt observeret. Det kan man (naturligvis) ikke når man bruger MAX(), SUM() eller lign. Det skulle selvfølgelig have været SELECT * FROM tabel WHERE point IN (SELECT MAX(point)FROM tabel
Jeg er på dybt vand vedr. performance. Hvis du har index på point, vil det have nogen indflydelse på SELECT MAX() ...?
Det vil det, men når først man har mange rækker i tabellen, så bliver det langsomt, da jet-driveren ikke er god til at optimere forespørgsler. Af en eller anden grund vil den lave en table-scan på dit forslag i stedet for at lave et index-lookup.
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.