Autor Zpráva
table
Profil *
Dobrý den,
měl bych na Vás jednu otázečku.
Zde mám dotaz do databáze:
<?php 
 
$datum=date("dmY"); 
$query="SELECT confid,Name,g.pozice AS hrac,z.nazev AS Teamname,Team,Pos,P,G,A,GP,Time,Pims,plusminus,PPG,SHG,Shoot,Hits,Pos1,FName1,LName1 FROM `playerstat` p LEFT JOIN zkratky z ON p.Team=z.zkratka LEFT JOIN NHL_Roster1 r ON p.Team = r.Team1
AND Name = CONCAT_WS( ' ', Lname1, Fname1 ) LEFT JOIN position g ON r.Pos1=g.zkratka1 WHERE confid=$confid AND POS='Goalie'  ";
If(!Empty($_GET['tym']) && $_GET['tym']!='*') 
    $query.="AND z.nazev='".mysql_real_escape_string($_GET['tym'])."' ";
    If(!Empty($_GET['post']) && $_GET['post']!='*') 
    $query.="AND g.pozice='".mysql_real_escape_string($_GET['post'])."' ";
$query.="ORDER BY PPG DESC Limit 1";
$result = mysql_query($query) or die(Mysql_error());
While($results=MySQL_Fetch_Assoc($result))
{
$teams[]=$results;
$cas=number_format($results['Time']/60,2);
 
?>
Teď oč mi jde, PPG zobrazuje goly, Shoot zobrazuje střely. Na řádku 11 mám order by tam bych potřeboval aby se mi to řadilo podle průměru z PPG/Shoot.
Ve výsledku do tabulky to zobrazuji takto:
<td><?php @print round( 100-$results['PPG']/$results['Shoot']*100,2);?>%</td>
Ale jak to udělat v tom dotazu aby mi to řadilo podle průměru vstřelených gólů které se počítají viz. o řádek výše.
Děkuji za radu


PS: oprava na řádku 10
Alphard
Profil
V order by může být výraz, takže tam dejte ten výpočet. Nebo si to spočítejte jako další sloupec a jen se na to odkažte (nejlépe přes alias).
table
Profil *
Zkusil jsem a stále mi to řadí jinak než by mělo.
quatzael
Profil
table:
Zkusil jsem a stále mi to řadí jinak než by mělo.

Jak jinak? Pro obrácené pořadí se používá ASC.

A za LIMIT dát 1 snad znamená, že Ti to vyhodí jen jeden řádek, ne?
table
Profil *
Ano momentálně chci aby mi to vyhodilo jeden řádek, zkusil jsem i obrácené pořadí a stále to zobrazuje jednoho a toho samého hráče, což je špatně.
Druhá věc je že nevím jestli jsem to udělal správně.(PHP se teprve učím)
Přidal jsem toto:
$procento=@print round( 100-$results['PPG']/$results['Shoot']*100,2);
A k order by jsem dal ORDER BY $procento DESC
Pokud je to blbě tak mě hned neukamenujte :D
juriad_
Profil *
10. radek bude:
$query.="ORDER BY PPG/Shoot DESC LIMIT 1";
ty konstanty tam nejsou pro porovnavani nutne, to same i pro funkci round
table
Profil *
Zkoušel jsem to už dříve ale nezobrazilo mi to správně, nyní ano, Nechápu ale děkuji za radu
Kubo2
Profil
table:
aby se mi to řadilo podle průměru z PPG/Shoot
[...] ORDER BY AVG(PPG), AVG(Shoot) [...]?
AVG() je sql funkcia, počítajúca priemer (tzv. agregačná funkcia).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: