Avatar billede dtm Nybegynder
09. marts 2003 - 20:02 Der 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? :-)
Avatar billede mortrr Praktikant
09. marts 2003 - 20:05 #1
Hvilken database bruger du?
Avatar billede hossein Nybegynder
09. marts 2003 - 20:06 #2
så brug Max(feltNavn)
Avatar billede dtm Nybegynder
09. marts 2003 - 20:09 #3
jeg bruger access database.....

Hvordan sætter jeg lige det der Max(feltNavn) ind?
Avatar billede jpvj Nybegynder
09. marts 2003 - 20:18 #4
SELECT * FROM tabel where points=MAX(points)
Avatar billede jpvj Nybegynder
09. marts 2003 - 20:18 #5
points skulle nok være point
Avatar billede dtm Nybegynder
09. marts 2003 - 20:24 #6
Jeg har skrevet sådan:
Set Query = Conn.Execute("SELECT * FROM tabel WHERE point=max(point) Order by kamp_nr ")

Det virker ikke :-(
Avatar billede mortrr Praktikant
09. marts 2003 - 20:25 #7
jpvj > Regner du selv med at den virker?
Avatar billede dtm Nybegynder
09. marts 2003 - 20:28 #8
hmmmm synes bare jeg har gjort, som der er blevet forslået??
Avatar billede mortrr Praktikant
09. marts 2003 - 20:28 #9
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 ")
Avatar billede mortrr Praktikant
09. marts 2003 - 20:29 #10
dtm > Den kommentar (20:25:58) var til jpvj
Avatar billede dtm Nybegynder
09. marts 2003 - 20:36 #11
okay sorry mortrr....

Men det er jo for fedt...... for det virker jo nu, og kan godt se logikken i det :-) tusind tak for hjælpen......
Avatar billede jpvj Nybegynder
10. marts 2003 - 10:32 #12
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() ...?
Avatar billede mortrr Praktikant
10. marts 2003 - 10:40 #13
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.
Avatar billede jpvj Nybegynder
11. marts 2003 - 02:33 #14
OK :-)
Avatar billede dtm Nybegynder
22. marts 2008 - 17:04 #15
Ja jeg bruger nu den sætning:

Set Query = Conn.Execute("select max(uge) as MaxUge from odds")
maxUge=Query.Fields("MaxUge").Value

Set Query = Conn.Execute("SELECT * FROM odds WHERE uge = " & MaxUge & " Order by kamp_nr ")


Men nu kunne jeg godt tænke mig at få vist den anden højest hvis det kan lade sig gøre??
Avatar billede dtm Nybegynder
22. marts 2008 - 17:07 #16
Glem det... har fundet ud af det :-)
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