在原始while循环中计算的ORDER BY%

时间:2012-09-12 07:56:15

标签: php mysql

我想根据主要结果查询中的数学和答案来排序结果,这就是我的意思:

我当前的代码看起来像这样:

$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;

}

正如您所见,我目前正在订购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总和,但我不知道那个查询是什么。

3 个答案:

答案 0 :(得分: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'];
}

答案 1 :(得分:2)

您可以使用如下列号:

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

答案 2 :(得分:2)

您可以按订单

按顺序执行计算
SELECT *
FROM tableName
ORDER BY ROUND((100*wins) / (wins+loses)) DESC