webForumDet fria alternativet

Hockeytabell

Databaser & SQL

4 svar · 316 visningar · startad av andreas_lindh

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

Jag har den här sql-frågan för att räkna ut en hockeytabell.

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 = 42 and s_matcher.uppdaterad = 1 
GROUP BY ID, Namn ORDER BY 8 DESC, 11 DESC, 9 DESC

Nu ska min förening anordna en cup och cupen använder sig av en regel som är att om två lag har samma poäng, samma målskillnad och samma antalet gjorda mål ska inbördes möte avgöra.

Kan jag på något sätt få fram inbördes möte i den här frågan?

Medlem sedan dec. 200012 464 inlägg
#2

Om du har Mysql 4.1 så skulle du kunna lägga in den som en sub-fråga. Annars så får du ställa flera frågor.

Medlem sedan jan. 20011 140 inlägg
#3

Webbhotellet har version 4.0.15.

Hur ska jag göra för att lösa det med flera frågor?

Medlem sedan dec. 200012 464 inlägg
#4

Ja du, jag ser inget enkelt sätt. Det jag kan tänka mig är att hämta all information och lagra den i en array och sedan gå igenom denna array och se om du behöver kontrollera inbördes möte med en extra fråga. Beronde på inbördes möte så får du kanske byta plats på två lag.

Medlem sedan jan. 20011 140 inlägg
#5

jag gjorde så här. Det är kanske inte den bästa lösningen men den fungerar och det är det viktigaste.

http://www.webforum.nu/showthread.php?s=&threadid=86567&forumid=191

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