webForumDet fria alternativet

Sortera efter SUM...

9 svar · 622 visningar · startad av oskars

oskarsMedlem sedan nov. 20051 317 inlägg
#1

Hejsan,

jag har följande kod:

<%
	Set Recset = Server.CreateObject("ADODB.Recordset")
	SQL = "Select * FROM Users WHERE Grad = 1 ORDER BY Namn asc"
	RecSet.Open SQL, Connect, 1, 2
	
	Color = "EEE"
	Do Until RecSet.EOF

		Set Recset2 = Server.CreateObject("ADODB.Recordset")
		SQL2 = "Select SUM(Pris) AS Pris FROM Konto WHERE sID = '"&RecSet("Namn")&"'"
		RecSet2.Open SQL2, Connect, 1, 2
	%>
	<tr style="background-color:#<%=Color%>">							
		<td><%=RecSet("Namn")%></td>
		<td><%=RecSet2("Pris")%></td>
	</tr>
	<%
		
	RecSet.MoveNext
	
	If Color = "EEE" Then	
		Color = "FFF"
	Else
		Color = "EEE"
	End If
	
	Loop

	RecSet.Close
	Set RecSet = Nothing
%>

Här sorterar jag ju efter Namn ... men hur gör jag för att sorta efter SUM(Pris)? Jag vill skapa mig en liten topplista...

Tacksam för hjälp =)

@ndersMedlem sedan juni 200032 969 inlägg
#2
... ORDER BY Sum(Pris) DESC

?

Du behöver nog skriva om dina sql-frågor till en jätteläcker join, men det ordnar du säkert :)

edit: eftersom jag inte hade något bättre för mig får du något att leka med:

SELECT u.Namn, SUM(k.Pris) AS Pris
FROM Users u
INNER JOIN Konto k ON k.sID = u.Namn
WHERE u.Grad = 1
GROUP BY u.Namn
ORDER BY SUM(k.Pris) DESC

mvh

oskarsMedlem sedan nov. 20051 317 inlägg
#3

Oj, fräckt! Tack så mycket! Återigen.

Försöker analysera koden.

Om jag förstått det rätt så definierar du Users till en "variabel" som du valt att kalla "u", eller? Och "u" använder man sen som förkortning till typ u.Namn etc?

FROM Users u

Jag fick det att fungera. Nu återstår att försöka lära sig det här så man kan det själv :)

@ndersMedlem sedan juni 200032 969 inlägg
#4

Om jag förstått det rätt så definierar du Users till en "variabel" som du valt att kalla "u", eller? Och "u" använder man sen som förkortning till typ u.Namn etc?

Yes - jag satte bara ett alias på tabellen för att få det tydligt men inte onödigt mycket att skriva.

voigtann1Medlem sedan juni 20019 519 inlägg
#5

man _kan_ skriva "FROM Users AS u" om man vill göra det tydligare men inget måste.

SPiNMedlem sedan mars 20007 896 inlägg
#6

Använder man nyckelordet "AS" från början blir det heller inga problem vid eventuell portning till någon annan DBMS, värt att notera.

LarsGMedlem sedan dec. 200012 464 inlägg
#7

Flyttas från ASP

order by sum(k.pris)

är inte tillåtet i standard SQL. Använd korrelationsnamnet istället

order by pris
@ndersMedlem sedan juni 200032 969 inlägg
#8

LarsG - jag har uppfattningen att det inte alltid fungerar att sortera på korrelationsnamnet - minns jag fel? :)

Det är såklart bättre - om det nu går bra. :)

LarsGMedlem sedan dec. 200012 464 inlägg
#9

Det fungerar inte i Access. Där kan man använda positionen i select-listan. Det är i och för sig inte heller standard men fungerar så vitt jag vet i alla DBMS. Jag vet dock att flera DBMS inte stöder aggregatfunktioner i order by.

oskarsMedlem sedan nov. 20051 317 inlägg
#10

Jag kör MySQL, om ni undrar :)

127 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)