Du kan inte plocka ut de unika resultaten i samma fråga som du plockar ut summan (jo, rent tekniskt går det, men det är fult). I varje loopvarv där du skriver ut summan får du köra en extra fråga som plockar ut de unika resultaten.
Nu har jag kommit så här långt men det är ändå inte rätt.
Ni kan kolla hur uppställningen/listan ser ut här: Standings SRL
Det är bara är 3st som varit med i alla 10 tävlingar och då blir det rätt med fälten och var summeringen hamnar på dessa.
Sista kolumnen som har ett värde är summeringen av tidigare poäng.
Vad som blir fel är de som inte varit med i några tävlingar.
Rubrikerna har jag satt manuellt då jag först vill få ut infot rätt.
Så här långt ser koden ut såhär:
strSQL = "SELECT SUM(Points) AS PSUM, Driver, Position, TeamName, CarNumber FROM race Where League = '" & strLEG & "' AND RTYPE = 'Race' GROUP BY Driver ORDER BY PSUM DESC"
Set rsPSUM = Conn.Execute(strSQL)
Do Until rsPSUM.EOF
intPSUM = rsPSUM("PSUM")
strDriver = rsPSUM("Driver")
SQL = "Select Nation FROM drivers WHERE Driver = '" & strDriver & "'"
Set rsNat = Conn.Execute(SQL)
Count = Count + 1
Response.Write "<tr onMouseover=""this.bgColor='#435475'"" onMouseout=""this.bgColor='#34415A'"">"
Response.Write "<td width=""26"" height=""15"" valign=""top"">"
Response.Write "<div align=""left""><font size=""1"" color=""#C9CBCF"" face=""Verdana, Arial, Helvetica, sans-serif""><b>" & Count & "</b></font></div></td>"
Response.Write "<td width=""140"" height=""15"" valign=""top"">"
Response.Write "<div align=""left""><font size=""1"" face=""Verdana, Arial, Helvetica, sans-serif"" color=""FFFFFF""><b>" & strDriver & " <img src=""flags/" & rsNat("Nation") & ".png""></b></font><br>"
Response.Write "<font size=""1"" color=""#C9CBCF"" face=""Verdana, Arial, Helvetica, sans-serif"">" & rsPSUM("TeamName") & "</font></div></td>"
SQL = "SELECT Points FROM race WHERE League = '" & strLEG & "' AND Driver = '" & strDriver & "' AND RTYPE = 'Race'"
Set rsP = Conn.Execute(SQL)
Do Until rsP.EOF
Response.Write "<td width=""22"" height=""15"" valign=""top""><div align=""center""><font size=""1"" color=""#C9CBCF"" face=""Verdana, Arial, Helvetica, sans-serif""><b>" & rsP("Points") & "</b></font></div></td>"
rsP.MoveNext
Loop
Response.Write "<td width=""22"" height=""15"" valign=""top"">"
Response.Write "<div align=""center""><font size=""1"" color=""#C9CBCF"" face=""Verdana, Arial, Helvetica, sans-serif""><b>" & intPSUM & "</b></font></div></td></tr>"
rsPSUM.MoveNext
Loop
Hmm, är det inte i dessa lägen man använder sig av LEFT/RIGHT JOIN, dvs man tar med värden från en tabell fast det inte finns motsvarande värde?
Någon sql-guru fixar säkert det, men då måste din databas ha tävlande och tävlingar i vars sin tabell.
Om du redan har det vågar jag inte svara på med utgångspunkt från din kod.
Jag har allt i samma tabell (race)
Fast jag har deltagarna i en annan tabell också som jag använder för info om de tävlande.
Och när jag läser in XML filen (resultatfilen för en enskild tävling) så görs en rad för varje tävlande i tabellen race.
Driver, Position, GridPos, Points, Event, Datum, R etc
ja det är en hel del info som går in där.
I övrigt fungerar sajten kanon men så fick jag den här förfrågan och insåg att jag totalt missat den biten när jag byggde sajten.
Jag förstår att jag kanske borde ha byggt upp den på ett annat sätt men jag tror att det borde gå att få till det på det sättet jag har DB'n uppbyggd idag.
Min första tanke när jag läste frågan tidigare idag var att du på något sätt måste veta vilken poäng som hör till vilken tävling, löst mha någon form av (krånglig) programmering i bakgrunden.
När jag sedan tittade på tråden igen, kom jag på att JOIN fixar ju det automatiskt, om resten hänger med.
Frågan är om det gör det, dvs du måste kanske hantera det som jag ursprungligen tänkte; mer manuellt?
Okej.
Min första tanke när jag läste frågan tidigare idag var att du på något sätt måste veta vilken poäng som hör till vilken tävling, löst mha någon form av (krånglig) programmering i bakgrunden.
Ja det var ju tanken faktiskt så du tänkte rätt.
I länken som jag postade nyss så är ju rubrikerna R1, R2, R3 etc tävlingarna som är körda.
Men vad som händer är att den trycker ihop alla poäng för respektive tävlande och radar dom i sidled efter varann och poängen hamnar alltså inte där de ska hamna (under rätt tävling R1, R2 etc).
Och summeringen av alla poäng hamnar inte således längst till höger under rubriken SUM.
Jag har en vän som säger att han fixat något liknande så jag hoppas jag får ett exempel av honom. Vet dock inte om det var i PHP han kanske fixade det.
Men som ni ser så stannar den upp efter den första tävlande.
Annars ser man att den som är överst inte varit med i första tävlingen precis som det ska vara.
Nu ser koden ut som följer.
strSQL = "SELECT SUM(Points) AS PSUM, Driver, Position, TeamName, CarNumber FROM race Where League = '" & strLEG & "' AND RTYPE = 'Race' GROUP BY Driver ORDER BY PSUM DESC"
Set rsPSUM = Conn.Execute(strSQL)
Do Until rsPSUM.EOF
Count = Count +1
intPSUM = rsPSUM("PSUM")
strDriver = rsPSUM("Driver")
SQL = "Select Nation FROM drivers WHERE Driver = '" & strDriver & "'"
Set rsNat = Conn.Execute(SQL)
Response.Write "<tr>"
Response.Write "<td>"
Response.Write Count
Response.Write "<td>"
Response.Write strDriver
Response.Write rsPSUM("TeamName")
strSQL = "SELECT TrackCourse, Dat, League FROM race Where League = '" & strLEG & "' GROUP BY Dat, TrackCourse ORDER BY Dat"
Set rsTrack = Conn.Execute(strSQL)
Do until rsTrack.EOF
intCount = intCount +1
SQL = "SELECT Points FROM race WHERE League = '" & strLEG & "' AND Driver = '" & strDriver & "' AND RTYPE = 'Race' AND [B]R = '" & intCount & "'[/B]"
Set rsP = Conn.Execute(SQL)
if not rsP.eof then
Do until rsP.eof
Response.Write "<td>" & rsP("Points") & "</td>"
rsP.MoveNext
Loop
else
Response.Write "<td>" & "-" & "</td>"
end if
rsTrack.MoveNext
Loop
Response.Write "<td>" & intPSUM & " & "</tr>"
rsPSUM.MoveNext
Loop
Jag har tagit bort lite onödigt i koden som formatering av text för att ni lättare ska se.
Det i fetstil fungerar första gången alltså och jag har provat att flytta loopen rsTrack som den räknar antal race som är gjorda.