Autor | Zpráva | ||
---|---|---|---|
mpark Profil |
#1 · Zasláno: 24. 5. 2006, 23:36:51
Chtěl bych v první řadě poděkovat Kajman_ovi.
Pomohl mi tady: http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=28&topic=2 6810 a tady: http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=28&topic=2 6613 Jsem teď v situaci, kdy musím co nejrychleji dodělat web fotbalového turnaje, se zaměřením na statistiky. Scripty jsem získal již rozděláné, je na mě je dodělat, ale mySQL ještě moc neumím. Proto žádám naposledy o radu jak to vyřešit. Doufám že se ozve Kajman_.:-) Tabulka hraci:
Tabulka hrac_co_hral
Tabulka zapasy
Tabulka user
Tak, to je jen jako příklad. Slovy řečeno, odehrálo se vzájemné utkání mezi týmy FC Budějovická a SK Kačerov nejdřív na jednom hřišti, potom na revanč na hřišti soupeře. Zápasy skončili jak můžeme vidět z databáze takto: FC Budějovická : SK Kačerov - 4 : 0 Góly: 4(Franta) SK Kačerov : FC Budějovická - 2 : 3 Góly: 2(Pepa), 3(Franta) V bráně FC Budějovická chytá Mojmír, proto je uveden "nasazen = 0" (0 = brankář), v bráně SK Kačerov je Ivoš. K tomu nasazení u ostatních hráčů to není tak důležité 9 může být třeba křídlo, 10 může být útočník. Důležitější je brankář - pro výpočet Statistiky brankářů. Uspěšnost brankáře vypočítáme pomocí vzorečku Početchycenýchstřel / Početvšechstřel * 100 Početchycených střel vypočítáme strelBrana - goly v daném určitém |IDzapasu |. Jak tedy pomocí příkazů mySQL vypočíst třeba úspěšnost Mojmíra a Ivoše a ještě je umět seřadit do tabulky |Hráč| |Z Týmu| |úspěšnost v procentech|? |
||
mpark Profil |
#2 · Zasláno: 24. 5. 2006, 23:54:44
Aby se neřeklo, že mám vše zadarmo, přišel jsem na to, jak zobrazit brankaře s jejich týmem a počtem střel na bránu:DDD Což je nesmysl, protože brankaři nestřílí, ale už jsem blízko:
protože teď jen přijít na to, jak počet střel vyměnit za procenta - přijít na výpočet počtu jimi chycených střel kterej potom vydělím počtem všech střel na jejich tým krát sto.. Kurňa. :(( |
||
Kajman_ Profil * |
#3 · Zasláno: 25. 5. 2006, 00:07:56
No, hodně záleží na tom, jaká verze mysql tam běží (select version()).
No, můžu Vám prozdradit, že bych to viděl asi na vnořené dotazy spojené přes union. Tak zkuste, co zvládnete, protože já už dneska zvládnu akorát zachrápat :-) |
||
mpark Profil |
#4 · Zasláno: 25. 5. 2006, 00:41:43
Máte u mě flašku kvalitního vína.:) Verze mysql je MySQL 4.1.15. Já se na to vrhnu zítra, dnes už mě nic nenapadá. Tady je ten
web. Díky. |
||
Kajman_ Profil * |
#5 · Zasláno: 25. 5. 2006, 10:24:49
Proto žádám naposledy o radu jak to vyřešit
Tak když je to tedy naposled, ta možná takhle nějak select hr.Jmeno, us.tym, uspesnost.uspesnost from hraci hr, `user` us, (select brankari.hracovoID, (sum(brankari.chycenych)/sum(brankari.strelBrana))*100 uspesnost from (select vypstrel.strelBrana-z.golyH as chycenych, vypstrel.strelBrana, h.hracovoID from hrac_co_hral h, zapasy z, (select h2.IDzapasu, h2.id_tymu, sum(h2.strelBrana) strelBrana from hrac_co_hral h2 group by h2.IDzapasu, h2.id_tymu) vypstrel where h.nasazen_jako=0 and z.IDzapasu=h.IDzapasu and z.domaci=h.id_tymu and z.IDzapasu=vypstrel.IDzapasu and z.hoste=vypstrel.id_tymu union all select vypstrel.strelBrana-z.golyD as chycenych, vypstrel.strelBrana, h.hracovoID from hrac_co_hral h, zapasy z, (select h2.IDzapasu, h2.id_tymu, sum(h2.strelBrana) strelBrana from hrac_co_hral h2 group by h2.IDzapasu, h2.id_tymu) vypstrel where h.nasazen_jako=0 and z.IDzapasu=h.IDzapasu and z.hoste=h.id_tymu and z.IDzapasu=vypstrel.IDzapasu and z.domaci=vypstrel.id_tymu ) brankari group by brankari.hracovoID ) uspesnost where uspesnost.hracovoID=hr.hracovoID and hr.id_tymu=us.id_tymu order by uspesnost.uspesnost desc Berte to spíš jako inspiraci, nemám zájem to zkoušet. No, a bude to asi pomalé, protože ty tabulky na tento výpočet nejsou optimální. |
||
mpark Profil |
#6 · Zasláno: 25. 5. 2006, 12:30:37
Bože to je kód. :) Vyzkouším...
|
||
mpark Profil |
#7 · Zasláno: 25. 5. 2006, 12:58:21
Už se to rýsuje, jenom přijít na správný název týmu a jména...
Text odkazu |
||
mpark Profil |
#8 · Zasláno: 25. 5. 2006, 13:17:24
Tak to ukazuje procenta, ale je tam ještě jeden problémek. Vypočítá to hráče, který třeba hrál výborně, jeho tým vyhrál 10:0 a on má božskou úspěšnost 100%, ale jiný brankař hrál 20 zápasů, šlo mu to jakž takž a má úspěšnost 90%. Pro nás je jasné, že ten s 90% je lepší jak ten se 100%. chybí tam podmínka např. 50% počtu odehraných zápasů mužstva každého brankaře. šlo by toto nějak ošetřit? Pravděpodobně někam count (z.IDzapasu) nebo sum(z.IDzapasu) ???
|
||
mpark Profil |
#9 · Zasláno: 25. 5. 2006, 13:26:51
A navíc ty procenta neodpovídají...
|
||
Kajman_ Profil * |
#10 · Zasláno: 25. 5. 2006, 13:29:32
Alespoň deset odchytaných utkání by snad šlo takhle...
) brankari having count(brankari.hracovoID)>=10 group by brankari.hracovoID přijde mi to spravedlivější než nadpoloviční chytání. |
||
Kajman_ Profil * |
#11 · Zasláno: 25. 5. 2006, 13:30:47
A navíc ty procenta neodpovídají...
Tak to je pech :-) Asi si to budete muset napsat sám nebo počkat na radu někoho jiného. |
||
mpark Profil |
#12 · Zasláno: 25. 5. 2006, 13:32:42
Můžu se zeptat kde jsme vzali tabulku brankari? Ta je nějaká virtuální? Dál by mě zajímalo, protože nesedí procenta, jak bych mohl vypsat místo ".$z["uspesnost"]." % spíš počet chycených/vypálených pro kontrolu kde je chyba.... Takhle ".$z["chycenych"]."/".$z["vypstrel"]." mi to nic nevypíše.
|
||
Kajman_ Profil * |
#13 · Zasláno: 25. 5. 2006, 13:39:24
Jejkote nalaďte sql v php, ale v aplikaci na to určené... pma, mysql query,...
brankari je pojmenovany vnoreny select Možná bude lepší, když si o mysql něco přečtete ;-) |
||
mpark Profil |
#14 · Zasláno: 25. 5. 2006, 13:42:46
Není špatně syntaxe?
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group by brankari.hracovoID ) uspesnost where uspesnost.hracovoID=hr.hracovoID and hr.t' at line 15 |
||
mpark Profil |
#15 · Zasláno: 25. 5. 2006, 13:44:06
Jejkote nalaďte sql v php, ale v aplikaci na to určené... pma, mysql query,...
No samozřejmě že to dělám přes mysql query :D Nedal jsem sem celej kód.;) |
||
Kajman_ Profil * |
#16 · Zasláno: 25. 5. 2006, 13:47:46
Není špatně syntaxe?
Pardon, having samozřejmě až po group by. No samozřejmě že to dělám přes mysql query Jo, přes mysql_query ale já měl na mysli program MySQL Query Browser. |
||
mpark Profil |
#17 · Zasláno: 25. 5. 2006, 13:53:27
Tak teď to nevypsalo pro jistotu nic. Bez erroru, ale nic.:) Už jste se s tím dost natrápil, moc vám děkuju, kam mám zaslat to vínko?:d Když jsme u toho čtení nečtení, netvrdím že sql ovládám, jakou literaturu byste mi doporučil? Mám knihu PHP a MySQL - Rozvoj webových aplikací od Luke Welling a Laury Thomson - vydal SoftPress. Koska spoustu lidí haní. Z čeho jste čerpal vy?
|
||
mpark Profil |
#18 · Zasláno: 25. 5. 2006, 14:08:31
Stáhnul jsem si MySQL Query Browser. Jméno a heslo je mi jasné, jsou to logovací údaje do mysql, ale nemůžu se připojit. Co by mělo být v Stored connection a Server host? Připojuju se na isol.cz V obou případech jsem zadal mysql.isol.cz což je normálně funkční, ale přes Browser mi vypíše hlášku MySQL Error number 2003 že se nemůžu připjit k serveru mysql.isol.cz '10054'
|
||
Kajman_ Profil * |
#19 · Zasláno: 25. 5. 2006, 14:09:32
Tak teď to nevypsalo pro jistotu nic. Bez erroru, ale nic.:)
A odchytal nějaký brankář alespoň 10 zápasů? Z čeho jste čerpal vy? Hodně lidí doporučuje v češtine seriál na linuxsoftu... http://www.linuxsoft.cz/article.php?id_article=731 Já mám raději manuál... http://dev.mysql.com/doc/refman/4.1/en/index.html |
||
Kajman_ Profil * |
#20 · Zasláno: 25. 5. 2006, 14:11:11
MySQL Error number 2003
Asi není povolené se na ten server připojit z Vašeho počítače. Tak to snad mají alespoň na webu phpmyadmina. |
||
mpark Profil |
#21 · Zasláno: 25. 5. 2006, 14:16:50
Máte pravdu, neodehráli ještě 10 zápasů, dal jsem 5 a vypsalo to dobře, ale je chyba ve výpočtu. Zkusím na to přijít sám. Moc vám děkuju.
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0