Avatar billede boenne Nybegynder
29. juni 2003 - 22:59 Der er 12 kommentarer og
1 løsning

Højeste værdi i SQL-sætning?

Hej..

Mit problem er at jeg ikke kan få mit loop til at loope rigtigt (tror jeg) I hvertfald returneres der et forkert resultat. Uanset hvad jeg prøver..

Jeg skal bruge den højeste værdi feltet Antalhits fra min database.
Jeg har prøvet at loope i forskellige varianter
også med For løkker , Do while, Do Loop m.m..
Access er noget skod..

Kan nogle hjælpe?



Koden ser således ud:

strSQL ="SELECT * from Maxhit"
set rs = Conn.execute(strSQL)

    hojestetal=rs("Antalhits")
    hitdato=rs("dato")
   
Do Until rs.EOF
    tallaest= rs("Antalhits")
   
    If hojestetal < tallaest then
    hojestetal=tallaest
    hitdato= rs("dato")
    rs.MoveNext
    Else
    rs.MoveNext
    End If
Loop
Avatar billede eagleeye Praktikant
29. juni 2003 - 23:04 #1
Hvorfor bruger du ikke bare Max i SQL ??


strSQL ="SELECT Max(Antalhits) as antal, dato from Maxhit"
set rs = Conn.execute(strSQL)

hojestetal=rs("antal")
hitdato=rs("dato")

Response.write "Højst antal = " & hojestetal & " det var " & hitdato
Avatar billede fri-hash Nybegynder
29. juni 2003 - 23:05 #2
er din "antalhits"-kolonne af typen tal? i så fald kan du gøre det direkte i SQL'en - noget lignende:

SELECT dato, MAX(Antalhits) AS Antalhits FROM Maxhit
Avatar billede netro Nybegynder
29. juni 2003 - 23:09 #3
"Access er noget skod.."

Ja, det er alle databaser, hvis ikke man anvender dem korrekt.
Avatar billede boenne Nybegynder
29. juni 2003 - 23:18 #4
Eagle>> prøvede din løsning og fik: Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "dato" som en del af en aggregatfunktion. ??
fri-hash>> øhh Nej den er sat ind som tekst for at undgå at ACCESS(JEG)laver skod...
netro>> Yep se ovenstående svar.. og sæt parantesen omkring ACCESS  i stedet..:=)
Avatar billede eagleeye Praktikant
29. juni 2003 - 23:22 #5
Hov glemte en GROUP BY prøv med denne  :


strSQL ="SELECT Max(Antalhits) as antal, dato from Maxhit GROUP BY dato"
set rs = Conn.execute(strSQL)
Avatar billede boenne Nybegynder
29. juni 2003 - 23:29 #6
Eagle>> Jo det virker.. delvist..
Jeg får nu det næsthøjeste.. mine testdata er følgende værdier
i rækkefølge.. 4,20,15,10 (altså 4 records)

Udskriften er:Højst antal = 15 det var 26-06-2003
Avatar billede eagleeye Praktikant
29. juni 2003 - 23:32 #7
Er det en tal kolonne ?
Avatar billede boenne Nybegynder
29. juni 2003 - 23:34 #8
Nej, jeg prøver at lave den om til tal..
Avatar billede boenne Nybegynder
29. juni 2003 - 23:35 #9
Nej, det hjalp ikke...
Avatar billede eagleeye Praktikant
29. juni 2003 - 23:44 #10
hmm, så lav den med top 1

strSQL ="SELECT top 1 Antalhits, dato from Maxhit ORDER BY Antalhits DESC"
set rs = Conn.execute(strSQL)

hojestetal=rs("Antalhits")
hitdato=rs("dato")

Response.write "Højst antal = " & hojestetal & " det var " & hitdato
Avatar billede boenne Nybegynder
29. juni 2003 - 23:48 #11
SE DET VAR NOGET HELT ANDET..:) det virker... men det regnede du vel også med? :) takker.. (jeg har aldrig hørt om top 1..) men bare det virker.. :)
Avatar billede eagleeye Praktikant
29. juni 2003 - 23:49 #12
Man kan bruge TOP X til at udvælge de føste X antal records fra databasen.
Avatar billede boenne Nybegynder
29. juni 2003 - 23:54 #13
Ahaa.. ligesom at du får 1 resultat = det første, efter sorteringen
Eller hvis du skriver 10 = de første 10 resultater.. ok.. takker..
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