webForumDet fria alternativet

Count på olika saker

ASP

8 svar · 212 visningar · startad av erka

Medlem sedan dec. 19996 522 inlägg
Frågan#1

Jag har 2 tabeller, en med användarinformation sedan har jag en tabell med 5 olika grenar kopplad till varje person i användar tabellen.

På en sida vill jag nu visa vem som har mest poäng i varje enskild gren. typ så här

kast med liten boll
Pelle : 8 poäng

60 meter
Frida : 10 poäng

osv. genom alla grenar. Hur gör man det egentligen..tacksam för hjälp.

------------------
1 Man, 1 Million dead, The odds are just about even - Ash

Medlem sedan dec. 19998 577 inlägg
#2

Då använder du SQL-funtionen Count: http://www.webavis.nu/webavis/html/artiklar/asp/asp9.shtml

Och du har väl kopplat ett idnummer till poängen!?

SQL = "Select Count(points) AS cntPoints from tabell where userid = "& idnummer

Hämta med ditt recordset: rs("cntPoints")

------------------
webEye.nu SweQuake.com

[Redigerat av Vide den 09 apr 2001]

Medlem sedan dec. 19996 522 inlägg
#3

tabellerna ser ut så här

USER
-------
UserID
UserName
UserPass
UserNick

STAT
-------
KastMedBoll
60Meter
Langdhopp
UserID

Vid varje vinst i någon gren får de 1 poäng om de kom etta.

PÅ resultat.asp vill jag skriva ut vem som leder kast med liten boll ligan osv tills alla grenar är averkade.

blir det så med din kod..

------------------
1 Man, 1 Million dead, The odds are just about even - Ash

Medlem sedan dec. 19998 577 inlägg
#4

Hjärnsläpp, du skall ju använda Max! :e

SQL = "Select UserId, Max(KastMedBoll) AS cntBoll from stats"

och sedan hämtar du bara namnet med UserId som argument i Where-satsen. :)

Skapa en för varje sport.

------------------
webEye.nu SweQuake.com

Medlem sedan dec. 19996 522 inlägg
#5

tackar, hjärnsläpp är förlåtligt efter en helg :e :e

------------------
1 Man, 1 Million dead, The odds are just about even - Ash

Medlem sedan dec. 19996 522 inlägg
#6

nu har jag

<%	
Set Connect=server.CreateObject("adodb.connection")
DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
DSNtemp=dsntemp & "DBQ=" & server.mappath("db/mess.mdb")
Connect.Open DSNtemp

SQLStmt = "Select personid, Max(kastmedboll) AS cntBoll from stats"
Set RS = Connect.Execute(SQLStmt)
%>

<%=RS("Cntboll")%>

PersonID hette det inte UserID..Jag får meddelandet

[Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression 'personid' as part of an aggregate function.

Sen undrar jag om det inte finns någe sätt att loopa igenom alla grenar dynamiskt. Som det är nu måste jag ju skriva en sqlsats för varje gren..

jag kanske var lite oklar, vid varje vinst får det +1 i fältet för den grenen de vann...alltså vinner jag i kast med liten boll får jag värdet tidigare för rätt användare i kast med liten boll + 1..

------------------
1 Man, 1 Million dead, The odds are just about even - Ash

[Redigerat av erka den 09 apr 2001]

[Redigerat av erka den 09 apr 2001]

[Redigerat av erka den 09 apr 2001]

Medlem sedan dec. 19996 522 inlägg
#7

fean! får det inte att fungera....samma skit som förr..

Kan man göra på det sättet jag försökt eller är jag helt ute å cyklar ?

------------------
1 Man, 1 Million dead, The odds are just about even - Ash

Medlem sedan dec. 200012 464 inlägg
#8

Nja, din SQL sats blir nog lite mer komplicerad än så

Select username, usernick, 'Kast med boll', kastmedboll 
  from user join stats using (userid)
 where kastmedboll in (select max(kastmedboll)
             from stats)

Du kan ju testa ut den här SQLsatsen separat.

User är inget bra kolumnnamn då det är ett reserverat ord i de flesta SQLdialekterna. Det är inte heller bra att namnet inleds med siffror då man måste specialhantera detta.

Om du vill ha de andra grenarna också, så är det nog enklast att göra en union

Select username, usernick, 'Kast med boll', kastmedboll 
  from user join stats using (userid)
 where kastmedboll in (select max(kastmedboll)
             from stats)
union
Select username, usernick, 'Längdhopp', 
langdhopp
  from user join stats using (userid)
 where langdhopp in (select max(langdhopp)
             from stats)
union
Select username, usernick, '60 meter', 
[60meter]
  from user join stats using (userid)
 where [60meter]in (select max([60meter])
             from stats)

Det fungerar bra om du samma typ i alla tre kolumnerna.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 19996 522 inlägg
#9

Tack för hjälpen. jag har nu gjort så här..

<%	
Set Connect=server.CreateObject("adodb.connection")
DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
DSNtemp=dsntemp & "DBQ=" & server.mappath("db/mess.mdb")
Connect.Open DSNtemp

SQLStmt = "Select MAX("& Request.Querystring("gren") &") AS MaxPoints from stats"
Set RS = Connect.Execute(SQLStmt)
SQLStmt2 ="SELECT personid FROM stats WHERE "& request.querystring("gren") &" =" & RS("maxPoints") & "" 
Set RS2 = Connect.Execute(SQLStmt2)

Response.Write(SQLStmt)
Response.Write(SQLStmt2)
%>
<br><br>

<%=rs2("personid")%><br>
<%=RS("MaxPoints")%>

skickar med vilken gren jag vill ha i en querystring och fixar det utifrån där. Men hur gör man nu om man vill ha alla grenar på en och samma sida..
återkommer om inte någon gör det före mig..

------------------
1 Man, 1 Million dead, The odds are just about even - Ash

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