webForumDet fria alternativet

Få fram placering

Databaser & SQL

2 svar · 186 visningar · startad av andreas_lindh

Medlem sedan jan. 20011 140 inlägg
Frågan#1

jag har den här frågan för att ta fram en tabell för hcokeyserier.
Går det på något sätt att få fram vilken placering laget haft som bäst,sämst och en genomsnitts placering?

SELECT s_deltagande_lag.ID, s_deltagande_lag.Namn,s_deltagande_lag.serie_id,
@games := Count(s_matcher.ID) AS games,
@win := Sum((s_deltagande_lag.ID=lagid_a And resultat_a > resultat_b ) 
Or (s_deltagande_lag.ID=lagid_b And resultat_a<resultat_b)) AS win,
@tie := Sum(resultat_a=resultat_b) AS tie,
@lost := ((Count(s_matcher.ID))-(Sum((s_deltagande_lag.ID=lagid_a And resultat_a > resultat_b )
Or (s_deltagande_lag.ID=lagid_b And resultat_a<resultat_b)))-(Sum(resultat_a=resultat_b))) as lost,
@poang:= ((Sum((s_deltagande_lag.ID=lagid_a And resultat_a > resultat_b )
Or (s_deltagande_lag.ID=lagid_b And resultat_a<resultat_b))*2)
 + (Sum(resultat_a=resultat_b))) AS poang,
@plus := Sum((s_deltagande_lag.ID=lagid_a)*resultat_a +
 (s_deltagande_lag.ID=lagid_b)*resultat_b) as plus,
@minus := Sum((s_deltagande_lag.ID=lagid_a)*resultat_b + 
(s_deltagande_lag.ID=lagid_b)*resultat_a) as minus,
@plusminus := Sum((s_deltagande_lag.ID=lagid_a)*resultat_a +
 (s_deltagande_lag.ID=lagid_b)*resultat_b) -
 Sum((s_deltagande_lag.ID=lagid_a)*resultat_b + (s_deltagande_lag.ID=lagid_b)*resultat_a) as plusminus
FROM s_deltagande_lag LEFT JOIN s_matcher ON (s_deltagande_lag.ID=s_matcher.lagid_a) 
Or (s_deltagande_lag.ID=s_matcher.lagid_b)
where s_deltagande_lag.serie_ID = 2
GROUP BY ID, Namn
ORDER BY 8 DESC, 11 DESC, 9 DESC, 10 ASC
Medlem sedan sep. 20026 425 inlägg
#2

Jädrar vilken SQL-sats! Undrar om LarsG orkar sig på den.. Jag går i alla fall bet. :(

Medlem sedan dec. 200012 464 inlägg
#3

Nej, det går inte i Mysql. Du behöver stöd för vyer eller att kunna ange en select-sats i from listan. Det är förmodligen enklast att räkna ut det i applikationen.

Hämta allt data ordnat efter omgång, beräkna plats för varje lag och använd en array för att lagra högsta/lägsta/medel.

257 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)