2012-09-12 20 views
4

我想根據主要結果查詢中的數學和答案下令結果被裏面原來的計算,繼承人我的意思:ORDER BY%,而環

我當前的代碼看起來是這樣的:

$query = "SELECT * FROM foo WHERE foobar='{$fobo}' ORDER BY id DESC"; 
$result = mysql_query($query); 

while($row = mysql_fetch_array($result)) 
{ 

    $percent = round((100 * $row['wins']/($row['wins'] + $row['loses']))); 

    echo 'blah blah blah' . $percent; 

} 

正如你可以看到我目前ORDER BY ID:

$query = "SELECT * FROM foo WHERE foobar='{$fobo}' ORDER BY id DESC"; 

,但我想爲了通過$percent答案,但while循環中,多數民衆贊成計算。

我試圖創建一個查詢,並把它的主要結果查詢之前:

$p = "SELECT wins, loses FROM foo WHERE foobar='{$fobo}'"; 
$pr = mysql_query($p); 

$pow = mysql_fetch_array($pr); 
$percent = round((100 * $pow['wins']/($pow['wins'] + $pow['loses']))); 

但吐出來

警告:mysql_fetch_array()預計參數1是資源, 布爾

我認爲%的計算可以在主要查詢內完成,而不是一個php的總和,我認爲會這樣做bu我不知道那個查詢是什麼。

+2

請不要使用'mysql_ *'函數來創建新的c頌。他們不再被維護,社區已經開始[棄用流程](http://news.php.net/php.internals/53799)。看到[**紅框**](http://php.net/mysql-connect)?相反,您應該瞭解[準備好的陳述](http://en.wikipedia.org/wiki/Prepared_statement)並使用[PDO](http://php.net/pdo)或[MySQLi](http:// php.net/mysqli)。如果你不能決定,試試[這篇文章](http://php.net/mysqlinfo.api.choosing)。如果你關心學習,[這裏是很好的PDO教程](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。 –

回答

5

而是內部循環計算percentage值,然後用另一個循環排序,你可以做到這一點,在短短一個查詢爲:

$query = "SELECT foo.*, 
        ROUND((100 * wins/(wins + loses))) AS percentage 
      FROM foo 
      WHERE foobar='{$fobo}' 
      ORDER BY percentage ASC"; 

$result = mysql_query($query); 

while($row = mysql_fetch_array($result)) 
{ 
    echo 'blah blah blah' . $row['percentage']; 
} 
+0

謝謝Omesh我認爲這可以使用查詢來完成。 –

+0

不客氣! :) – Omesh

2

您可以使用這樣的列數:

select 
    col1, 
    col2 
    round((100*wins)/wins+loses) 
from 
    foo 
where 
    foobar='{$fobo}' 
group by 
    col1, 
    col2 
order by 
    3 
2

您可以在您的訂單中按條款執行計算

SELECT * 
FROM tableName 
ORDER BY ROUND((100*wins)/(wins+loses)) DESC