PHP - 想要选择特定的行数并从SQL中对它们进行排序

时间:2013-05-16 02:01:07

标签: php mysql sorting

我有一个旨在创建评分方法的公式。用户输入的值应为“gold”,“silver”和“bronze”。然后在数据库中找到这些奖牌,并将每个奖牌的总数乘以用户指定的数量。用户也选择“优先级值”,这与表中的单独字段有关。

奖牌的总价值存储在medaltotal变量中。优先级值除以此变量以得出总分。

到目前为止,所有这些都按预期工作。

我现在需要按照上述方法定义的最高“得分”的顺序对表进行排序。一旦完成,它应该仅回显前10个结果,因此根据得分给出“前10名”。

到目前为止我使用的相关代码如下:

while ($row = $res->fetchRow()) {
    $priorityvalue = ($row('gdp') / 100000000);
    $goldvalue = $row[strtolower('gold')] * $gold;
    $silvervalue = $row[strtolower('silver')] * $silver;
    $bronzevalue = $row[strtolower('bronze')] * $bronze;
    $score = ($priorityvalue / $medaltotal);
}

我正在考虑修改mysql_fetch_array,但不确定哪种方法最好在这里使用。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

这是怎么做的。

  1. 阅读每一行&将分数分配到数组或对象中。
  2. 将其中的每一个添加到“结果列表”或数组中。
  3. 在得分上对结果列表进行排序。
  4. 打印前10个。
  5. 由于您从数据库读取的订单不是您希望打印的订单,因此必须将数据存储在临时数据结构中。解决。

    如上所述。

答案 1 :(得分:0)

如果我理解正确,这个SQL会返回你想要的结果:

select t.*, priority / medaltotal as score
from table t
order by score desc
limit 10