Avatar billede steen_hansen Forsker
04. oktober 2007 - 23:33 Der er 9 kommentarer og
1 løsning

SQL: Tag den højeste værdi

Denne linie tæller point sammen:

Set RS = Conn.Execute("SELECT SUM(points) As vPoints FROM MinTabel WHERE ID = " & fRS("ID") & "")


Udtrækket køres gennem en løkke. Hvordan finder jeg den højeste værdi?

<%=HøjesteVærdi%>
Avatar billede snakeeye Nybegynder
04. oktober 2007 - 23:42 #1
du kunne bruge:
MAX(column) as MaxValue
Avatar billede chrisp Nybegynder
04. oktober 2007 - 23:45 #2
Mit gæt er at du har en stribe id'er og for hvert id finder du sum'en af deres point via ovenstående SQL.. Under den antagelse er der 2 ting du kan gøre..

1. Fixe problemmet i ASP
Før løkken
Dim intCurSum, intMaxSum, intMaxId
    intMaxSum = 0

inde i løkken
Set RS = Conn.Execute("SELECT SUM(points) As vPoints FROM MinTabel WHERE ID = " & fRS("ID") & "")
intCurSum = Rs(0)
if intCurSum > intMaxSum then
  intMaxSum = intCurSum
  intMaxId = fRS("ID")
end if

2. Du kan koge det hele sammen til 1 SQL hvis du ikke bruger løkken til andet.
SELECT id,SUM(points) As vPoints FROM MinTabel WHERE MinTabel.ID in (" komma liste over dine ID, kan fås ved getString på fRS ") group by MinTabel.id order by vPoints Desc

den højeste værdi vil da stå i første row i dit recordset..

hvis du skal bruge alle ID'er og ikke kun et udplut kan du droppe where delen af udtrykket.

Din max
Avatar billede steen_hansen Forsker
05. oktober 2007 - 00:04 #3
Ok. Jeg skal så have lavet den højeste værdi med fed skrift:

<% If ........ Then %><b><%=Værdi%></b><% Else %><%=Værdi%><% End If %>
Avatar billede chrisp Nybegynder
05. oktober 2007 - 00:52 #4
ahh
okay..
hmm ja det er ikke så nemt for du kender ikke den højeste værdi før end du har været hele løkken igennem og der er det ligesom forsent.

vel. så er mit forslag at bruge metode 2 uden for løkken.
og så i løkken lave en simpel sammenligning
maxpoint = intcursum
Avatar billede steen_hansen Forsker
05. oktober 2007 - 00:55 #5
Ok, det vil jeg prøve i morgen. Jeg prøvede med denne, som fandt den mindste værdi:

<% If intMaxSum > intCurSum Then %><b>...........

Jeg prøvede så at vende den om:

<% If intMaxSum < intCurSum Then %><b>...........

Men det kom der intet ud af :)

Jeg kigger på det i morgen og håber, at jeg kan vende tilbage hvis det ikke vil spille ordentligt? :)
Avatar billede steen_hansen Forsker
05. oktober 2007 - 00:58 #6
Jeg kan godt se det, alle data skal trækkes gennem løkken, før man kan have den største værdi. Foreløbigt tak :)
Avatar billede steen_hansen Forsker
05. oktober 2007 - 00:59 #7
Forøvrigt, kan du vise mig denne:

komma liste over dine ID, kan fås ved getString på fRS
Avatar billede chrisp Nybegynder
05. oktober 2007 - 11:20 #8
kommastring = fRs.getString(,,",","")  (ud fra hukommelsen, så der kan være fejl)
kræver dog at fRs kun indeholder dine Ids og ikke andet.
Avatar billede steen_hansen Forsker
05. oktober 2007 - 20:02 #9
Hm? Jeg tror ikke jeg har forstået det korrekt:

IDstring = fRS.GetString(,,",","")

Set SELECT id,SUM(points) As vPoints FROM MinTabel WHERE MinTabel.ID in (" & IDstring & ") group by MinTabel.id order by vPoints Desc


snakeeye, jeg overså dig helt, sorry :)

Hvordan tjekker jeg på MaxValue, hvis SQL'en kommer til at se således ud:

Set RS = Conn.Execute("SELECT MAX(points) As MaxValue FROM MinTabel WHERE ID = " & fRS("ID") & "")

Der må skulle køres noget mere igennem løkken?
Avatar billede steen_hansen Forsker
05. oktober 2007 - 22:49 #10
Jeg har oprettet et nyt spørgsmål: http://www.eksperten.dk/spm/799729
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