php - ORDER BY % 这是在原始 while 循环中计算的

标签 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'])));

但那吐了出来

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean

我认为 % 计算可以在主查询中完成,而不是我认为可以执行的 php 求和,但我不知道该查询是什么。

最佳答案

无需在循环内计算 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'];
}

关于php - ORDER BY % 这是在原始 while 循环中计算的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12383574/

相关文章:

php - 我如何将这个带有多个或的查询转换为 Eloquent 格式?

php - 如何根据用户坐标和半径从表中检索数据

mysql查询,在查询中使用列名

php - HTML/PHP 表单不会将数据插入 MySQL 数据库

TextMate 项目中的 PHP 自定义类和函数自动完成

php - 当 WooCommerce 3 中提供免费送货服务时,隐藏具体的统一费率

php - 看似异步的页面加载

mysql - 如何在 MySQL 中对 "AS"值执行 SELECT。

php - SQLSTATE[23000] : Integrity constraint violation: 1048 Column 'ID' cannot be null

javascript - 多个网页的单个标题