我想根据主要结果查询中的数学和答案来排序结果,这就是我的意思:
我当前的代码看起来像这样:
$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总和,但我不知道那个查询是什么。
答案 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