Jag skall bygga en topplista till mitt forum.
En databas innehåller för enkelhetens skull i princip bara en lista med massor med användarnamn. T.ex.
Användarnamn1
Användarnamn3
Användarnamn2
Användarnamn1
Användarnamn1
Användarnamn4
Användarnamn3
Användarnamn2
Användarnamn2
Användarnamn1
Jag vill att detta skall bli en topplista som i detta fallet skulle bli:
1. Användarnamn1 - 4 inlägg
2. Användarnamn2 - 3 inlägg
3. Användarnamn3 - 2 inlägg
4. Användarnamn4 - 1 inlägg
Nej. I mitt forum har datatyperna:
- Rubrik
- Meddelande
- Användarnamn
- Datum
Sedan kom jag på att det hade varit skojigt att ha en topplista på de mest aktiva skribenterna. Jag har för mig det finns en speciell sak i SQL-frågan som man kan ställa för att få detta. Eller?
I juventus1s fråga ska du nog gruppera på enbart Anvandarnamn. I övrigt kan nog den fungera, utan att jag satt mig in allt för mycket i vad det hela handlar om. ;)
<%
Set Connect = Server.CreateObject("ADODB.Connection")
SQL = "SELECT Anvandarnamn, COUNT(Meddelande) AS msgCount FROM Forum GROUP BY Anvandarnamn ORDER BY 2 DESC;"
Set RecSet = Connect.Execute(SQL)
%>
Nepp! Inga On Error Resume Next. Jag har testat att hämta data från den med SELECT * FROM osv. och det funkar utmärkt...
Hela min kod ser alltså ut så här:
<%
Set Connect = Server.CreateObject("ADODB.Connection")
' <--- Koppling till mySQL-databas.
<%
SQL = "SELECT Anvandarnamn, COUNT(Meddelande) AS msgCount FROM Forum GROUP BY Anvandarnamn ORDER BY 2 DESC;"
Set RecSet = Connect.Execute(SQL)
Do Until RecSet.EOF
%><%=RecSet("Anvandarnamn")%><%
recset.movenext
Loop
Om det finns data i tabellen forum så skall det bli ett resultat av frågan.
Lägg till lite testutskrifter
<%
Set Connect = Server.CreateObject("ADODB.Connection")
' <--- Koppling till mySQL-databas.
<%
SQL = "SELECT Anvandarnamn, COUNT(Meddelande) AS msgCount FROM Forum GROUP BY Anvandarnamn ORDER BY 2 DESC"
Set RecSet = Connect.Execute(SQL)
if recset.eof then
response.write " Tomt <br>"
else
response.write " Inte tomt <br>"
Do Until RecSet.EOF
%><%=RecSet("Anvandarnamn")%><%
recset.movenext
Loop
end if
%>