webForumDet fria alternativet

Summera tabell med spelarresultat fortsättning

Databaser & SQL

1 svar · 360 visningar · startad av budg1e

Medlem sedan apr. 2005116 inlägg
Frågan#1

Behöver ytterligare en justering...

Nu summerar den alla omgångar men jag vill att den ska summera endast en omgång.

Fält för att para ihop omgångarna:

laginfo.CompID = resultat.KatID

Fält för att para ihop lagen

laginfo.id = resultat.lag

Tabell: laginfo

id || CompID || LagNamn || LagLedare

Tabell: resultat

KatID || score1 || score2 || time1 || time2 || lag ||

Har provat flera alternativ men ej lyckas, någos som vet hur jag ska göra?
Är det INNER JOIN som behöver justeras?

SELECT resultat.lag, LagNamn, 
SUM(CASE WHEN rank1 BETWEEN 1 AND 3 THEN score1 ELSE 0 END) AS score1, 
SUM(CASE WHEN rank1 BETWEEN 1 AND 3 THEN time1 ELSE 0 END) AS time1, 
SUM(CASE WHEN rank2 BETWEEN 1 AND 3 THEN score2 ELSE 0 END) AS score2, 
SUM(CASE WHEN rank2 BETWEEN 1 AND 3 THEN time2 ELSE 0 END) AS time2

FROM (SELECT *, rank() OVER (partition BY lag

ORDER BY score1, time1) AS 'rank1', rank() OVER (partition BY lag

ORDER BY score2, time2) AS 'rank2'

FROM resultat) AS resultat 
INNER JOIN laginfo ON resultat.lag = laginfo.id
WHERE rank1 < 4 OR rank2 < 4

GROUP BY resultat.lag, laginfo.LagNamn

ORDER BY score1, score2, time2

Nästa fråga som listar spelarna ser ut såhär

SELECT * FROM 
(SELECT rank() OVER (partition BY lag
ORDER BY score1, time1, score2, time2) AS 'rank', 
lag, namn, score1, time1, score2, time2, T_pos

FROM         resultat

WHERE Klass = 2) t
WHERE [rank] < 5
ORDER BY t_pos
Medlem sedan apr. 2005116 inlägg
#2

Hittade lösningen själv

INNER JOIN laginfo ON (resultat.lag = laginfo.id AND laginfo.CompID = " & iCompID & ")
257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
134 ms — deklarationer (db)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)