Autor | Zpráva | ||
---|---|---|---|
frankie Profil * |
#1 · Zasláno: 26. 11. 2007, 13:57:56
Ahoj
Rád bych na web vypsal klasickou fotbalovou tabulku: jméno týmu | výhry | prohry | remízy | body V mysql mám dvě tabulky jednu klasickou s týmy druhou se zápasy s atributy: id_zapasu, domaci, hoste, goly_domaci, goly_hoste. Lze nějakým způsobem sloučit do jednoho dotazu MySQL dotazy typu: SELECT jmeno_tymu, count ( id_zapasu ) as vyhry FROM tymy, zapasy WHERE ...podmínka vízězství GROUP BY jmeno_tymu SELECT jmeno_tymu, count ( id_zapasu ) as prohry FROM tymy, zapasy WHERE ...podmínka prohry GROUP BY jmeno_tymu SELECT jmeno_tymu, count ( id_zapasu ) as remízy FROM tymy, zapasy WHERE ...podmínka remízy GROUP BY jmeno_tymu ... a tím získat větší část výše zmiňované tabulky. Nebo je lepší vytvořit dočasnou tabulku s atributy jméno týmu, výhry, prohry, remízy a body a tuto tabulku několika dotazy naplnit daty. Ještě je samozřejmě možnost vytvořit 3 - 4 dotazy a pomocí php pak srovnat týmy do tabulky i s jejich statistikou, ale to mi nepřijde zrovna 2x "elegantní" a reději bych, aby většinu práce odvedla databáze. |
||
Kajman_ Profil * |
zkuste něco jako
select t.nazev, count(*) as zap, sum(vitezstvi) as vi, sum(remiza) as re, sum(prohra) as pr, sum(golyp) as gp, sum(golym) as gm, sum(golyp) - sum(golym) as pm, sum(vitezstvi) * 3 + sum(remiza) as body from (select domaci as tym, goly_domaci as golyp, goly_hoste as golym, if(goly_domaci > goly_hoste, 1, 0) as vitezstvi, if(goly_domaci = goly_hoste, 1, 0) as remiza, if(goly_domaci < goly_hoste, 1, 0) as prohra from zapasy union all select hoste as tym, goly_hoste as golyp, goly_domaci as golym, if(goly_domaci < goly_hoste, 1, 0) as vitezstvi, if(goly_domaci = goly_hoste, 1, 0) as remiza, if(goly_domaci > goly_hoste, 1, 0) as prohra from zapasy) tmp left join tymy t on (tmp.tym = t.id) group by tym order by body desc, pm desc, gp desc |
||
frankie Profil * |
#3 · Zasláno: 26. 11. 2007, 15:59:36
Díky moc !!!
Funguje je to skvěle! Ještě se kouknu do mysql manuálu a zjistím proč:) Dost těch věcí je pro mě nových např. SELECT něco FROM (SELECT .... ) a union all. |
||
Časová prodleva: 16 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0