Autor | Zpráva | ||
---|---|---|---|
tazzys Profil |
#1 · Zasláno: 27. 10. 2012, 22:24:05
Dobrý den, mam tabulku na výpočet hvězd ze zápasu nhl kde 1. hvězda ma 3 body, 2. hvězda 2 body a 3.hvězda 1 bod. Nejdřív to počíta počet jednotlivých hvězd a poté počítá sloupec body.
Jenže mě to počítá špatně. Hledal sem po netu a našel sem funkci distinct on jenže nevím jak ji importovat do tohoto scriptu, pomůže někdo ? <table class="samples"><tr><th>Pořadí</th><th>Jméno</th><th>Tým</th><th>Pozice</th><th>1.Hvězdou</th><th>2.Hvězdou</th><th>3.Hvězdou</th><th>Bodů</th></tr> <?php $dotaz=mysql_query("SELECT p.jmeno, p.id, p.tym, p.pozice, count(h1.hvezda1) as hvezda1, count(h2.hvezda2) as hvezda2, count(h3.hvezda3) as hvezda3, (count(h1.hvezda1)*3)+(count(h2.hvezda2)*2)+(count(h3.hvezda3)*1) as body from system_players p left join system_zapasy h1 on (p.id = h1.hvezda1 and h1.schvaleno = 'ano' and h1.cup = 'ne') left join system_zapasy h2 on (p.id = h2.hvezda2 and h2.schvaleno = 'ano' and h2.cup = 'ne') left join system_zapasy h3 on (p.id = h3.hvezda3 and h3.schvaleno = 'ano' and h3.cup = 'ne') group by h1.hvezda1 desc, h2.hvezda2 desc, h3.hvezda3 desc order by body desc limit 0,20") or die(mysql_error()); $i=1; while($row=mysql_fetch_assoc($dotaz)){ echo "<tr><td>".$i++.".</td><td>".$row["jmeno"]."</td><td>".$row["tym"]."</td><td>".$row["pozice"]."</td>"; echo"<td>".$row["hvezda1"]."x</td><td>".$row["hvezda2"]."x</td><td>".$row["hvezda3"]."x</td><td>".$row["body"]."</td> </tr>"; } ?> </table> |
||
Kajman Profil |
#2 · Zasláno: 27. 10. 2012, 22:30:56
Zkuste
count(distinct h1.primarniklicztabulkysystem_zapasy) Případně připojovat již zgroupovaná data. Něco jako from system_players p left join (select hvezda1, count(*) pocet_hvezd1 from system_zapasy where schvaleno = 'ano' and cup = 'ne' group by hvezda1) h1 on (p.id = h1.hvezda1) |
||
tazzys Profil |
#3 · Zasláno: 28. 10. 2012, 15:32:00
bohužel toto nefunguje :/
|
||
Kajman Profil |
Jak konkrétně to nefunguje? Jak vypadají kompletní dotazy po těchto úpravách, které zkoušíte? Jaký je primární klíč z tabulky system_zapasy?
Kompletní dotaz v druhé variantě musí ošetřit i null hodnoty počtů alespoň při sčítání... SELECT p.jmeno, p.id, p.tym, p.pozice, h1.pocet_hvezd1 AS hvezda1, h2.pocet_hvezd2 AS hvezda2, h3.pocet_hvezd3 AS hvezda3, ( Ifnull(h1.pocet_hvezd1, 0) * 3 ) + ( Ifnull(h2.pocet_hvezd2, 0) * 2 ) + ( Ifnull(h3.pocet_hvezd3, 0) ) AS body FROM system_players p LEFT JOIN (SELECT hvezda1, Count(*) pocet_hvezd1 FROM system_zapasy WHERE schvaleno = 'ano' AND cup = 'ne' GROUP BY hvezda1) h1 ON ( p.id = h1.hvezda1 ) LEFT JOIN (SELECT hvezda2, Count(*) pocet_hvezd2 FROM system_zapasy WHERE schvaleno = 'ano' AND cup = 'ne' GROUP BY hvezda2) h2 ON ( p.id = h2.hvezda2 ) LEFT JOIN (SELECT hvezda3, Count(*) pocet_hvezd3 FROM system_zapasy WHERE schvaleno = 'ano' AND cup = 'ne' GROUP BY hvezda3) h3 ON ( p.id = h3.hvezda3 ) ORDER BY body DESC LIMIT 0, 20 |
||
Časová prodleva: 11 let
|
0