10. juni 2004 - 17:01Der er
18 kommentarer og 1 løsning
Udregn placering efter uge og points (opdater)
Hejsa jeg har en konkurrence hvor mine brugere kan samle points sammen og den der så får flest points vinder - logisk nok. Der kan være x målinger pr uge og der udpeges en vinder hver uge.
Jeg samler data op i en tabel med disse rækker ----------------------------------------------------------- ID BrugerID Uge points 1 1 24 2 2 1 24 2 3 1 24 2 4 2 24 5 5 2 24 2 6 3 24 15 7 4 24 5 8 4 24 5 9 5 24 10 10 6 24 2
11 1 25 5 12 2 25 10 13 3 25 2 Og så videre.... ---------------------------------------------------------- Jeg har en adm side hvorfra jeg kan siger "Find placeringer for uge X" Når jeg gør det så skal den gennemløbe den ovenstående tabel og oprette poster i en anden tabel der hedder placering. Beder jeg om placering for uge 24, skal tabellen placeringer opdateres med disse poster. Hvis to brugere har samme antal points fx bruger 4 og bruger 5 skal der være random på om en den ene blev nummer x og den anden x+1 ---------------------- ID BrugerID Uge pointsTotal placering 1 1 24 6 5 2 2 24 7 4 3 3 24 15 1 4 4 24 10 2 (fundet random) 5 5 24 10 3 (fundet random) 6 6 24 2 6 --------------------
OK, i saa tilfälde... Lad os sige at tabel 2 hedder TABEL_SUMMATION og at ID er auto_increment:
UGE = Request.Form("UGE")
sql = "select sum(points) as points_total, BrugerID from TABEL where Uge = " & UGE & " order by points_total DESC, BrugerID" set rs = conn.executs(sql)
do while not rs.eof
if rs("points_total") <> temp_points_total then placering = placering + 1 end if
Lad os sige de samme 2 brugerer 5 uger i træk har samme antal points. Vil det så være den samme bruger der bliver nummer x og den samme der bliver nummer x+1 5 uger i træk - eller er det tilfældigt?
Jeg har en tabel "points" med x antal rækker her kan en bruger have x antal rækker med points - de skal summerer PR bruger og derefter placeres i den anden tabel
Så fik jeg det til at spille: --------------------- UGE = Request.Form("UGE") AAR = Request.Form("AAR")
strSQL = "select DISTINCTROW Sum(points) AS pointSum, Count(*) AS antalDeltagerer, brugerstatus, markedsstatus2 from points where uge = '" & UGE & "' AND aar= '" & AAR & "' GROUP BY brugerstatus, markedsstatus2 ORDER BY Sum(points)" Set rs = Conn.Execute(strSQL)
placeringTemp = 1 do while not rs.eof sql_2 = "insert into placering (brugerstatus, markedsstatus2, uge, aar, totalPoints, placering) values ('" & rs("brugerstatus") & "'," & rs("markedsstatus2") & ",'" & UGE & "','" & AAR & "'," & rs("pointSum") & ",'" & placeringTemp & "')" Conn.Execute(sql_2) placeringTemp = placeringTemp + 1 rs.movenext loop rs.close ------------------------- Men jeg mangler statig én der kan finde ud af lave en fair lodtrækning hvis 2 eller flere har samme antal points. det skal i så fald gøres inden posterne gennem i placering - nogen der lige har det?
strSQL = "select DISTINCTROW Sum(points) AS pointSum, Count(*) AS antalDeltagerer, brugerstatus, markedsstatus2 from points where uge = '" & UGE & "' AND aar= '" & AAR & "' GROUP BY brugerstatus, markedsstatus2 ORDER BY Sum(points), rnd(-(Sum(points)+MAX(ID))*" & R & ")"
Selvom jeg selv fik løst den første del opgave får du alle 60 points for den løsning havde jeg aldrig fundet selv ;-)
Takker
Synes godt om
Ny brugerNybegynder
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.