webForumDet fria alternativet

Sortera Array efter högsta värdet först.

ASP

4 svar · 817 visningar · startad av Alamartimo

Medlem sedan okt. 2004129 inlägg
Frågan#1

Hejsan!

Har haft lite problem med en sortering av en summering jag gjort.
Fick inte till det direkt när jag tog ut siffrorna ur databasen så jag la in allt i en Array.

Men nu fixar jag inte sorteringen på den så att högsta värdet tillsammans med namnet visas överst osv.

Lite kod:

	SQL = "SELECT DISTINCT Driver FROM race WHERE RType = 'Race'"
	set rsDrv = Conn.Execute(SQL)
	Do Until rsDrv.EOF
	strDriver = rsDrv("Driver")

' här plockar jag ut siffror på olika händelser för varje Driver som jag summerar och drar ifrån etc och delar med lite andra värden.

'Summan av uträkningen i formatet(0,0000)

	intScore = FormatNumber(intScore2, 4)

Dim MyArr
MyArr = Array(strDriver, intScore)

Response.Write MyArr(0)
Response.Write MyArr(1)

	rsDrv.MoveNext
	Loop

Jag får ut listan med summeringen men de kommer i den ordningen som de las in i Arrayen vilket är fel.

Jag har provat en hel del varianter jag hittat här och på andra sidor men jag tror inte att jag riktigt förstår det hela så tja..

Får inte till det :r

Sorteringen ska göras på intScore

Någon?

Medlem sedan dec. 19996 721 inlägg
#2

Det kan bli lite knepigt, så jag skulle rekommendera att du löser problemet direkt i SQL-frågan.

Om du vill gå vidare med Array-sortering kan du titta lite här:

http://www.google.com/search?q=sort+array+vbscript&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official

En annan variant är att lagra informationen i ett recordset

http://www.microsoft.com/technet/scriptcenter/guide/sas_ent_piij.mspx?mfr=true

Medlem sedan okt. 2004129 inlägg
#3

Ajdå.

Tja jag har försökt i några dagar att få ihop det direkt i en SQL fråga men där är så många värden med så många olika kriterier grupperat på Driver som jag vill ha ut så det tycktes och jag tror det är omöjligt att få ut värdena direkt i SQL frågan.

Men jag ska jobba vidare med Arrayen och snegla lite på att skapa ett nytt Recordset som du tipsade om.

Medlem sedan okt. 2004129 inlägg
#4

Jag skippar den där uträkningen och kör en

AVG(kolumn1) + COUNT(kolumn2) AS Värde

Får inte in allt i uträkningen som jag ville ha men jag får ändå en rankinglista som speglar det jag är ute efter.

Medlem sedan okt. 2004129 inlägg
#5

Vet inte om jag vågar posta det här men gör det ändå.

Tänk att så simpla grejer kan bli så svårt :e

I alla fall så gjorde jag så att jag körde uträkningarna på varje Driver med de frågor jag behövde ställa till databasen.

Sen körde jag en sista fråga som tog med den summerade uträkningen direkt i SQL frågan med ex . AVG(Position) + '" & intScore & "' AS Score och sorterade efter Score där jag inte hade haft med AVG(Position) frågan tidigare i uträkningen.

Således fick jag ett Summerat värde på de värden jag ville summera och kunde sortera efter det.

280 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
146 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
149 ms — ändringar (db)