4

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

我当前的代码如下所示:

$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 sum ,但我不知道那个查询是什么。

4

3 回答 3

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'];
}
于 2012-09-12T07:59:19.960 回答
2

您可以在 order by 子句中执行计算

SELECT *
FROM tableName
ORDER BY ROUND((100*wins) / (wins+loses)) DESC
于 2012-09-12T08:02:06.577 回答
2

您可以使用这样的列号:

select
    col1,
    col2
    round((100*wins)/wins+loses)
from
    foo
where
    foobar='{$fobo}'
group by
    col1,
    col2
order by
    3
于 2012-09-12T07:59:25.710 回答