【问题标题】:Sort data using sort function or sort as retrieved from database?使用排序功能对数据进行排序还是从数据库中检索到排序?
【发布时间】:2012-02-29 13:03:36
【问题描述】:

我有一个包含相应分数的团队列表。

$name[$i] 包含名称,scores[$i] 包含相应的分数

我需要按分数对团队进行排序,同时保持与相应团队名称的分数关联。

我想知道最好创建一个多维数组,例如 $teaminfo[$name][$score] 并使用排序功能还是我更好 使用 sql 对从数据库中抓取的数据进行排序?

无论哪种方式都重要吗?我正在寻找最简单的方法。

【问题讨论】:

    标签: php mysql arrays sorting


    【解决方案1】:

    直接从数据库中对它进行排序,您可以省去一大堆的麻烦。只需在 SQL 中包含 ORDER BY 子句即可。

    编辑:

    如果当前运行 2 个查询,则

    SELECT first_table.*, second_table.* WHERE first_table.id = second_table.id 
    ORDER BY second_table.score DESC
    

    (或其他!)

    【讨论】:

    • 好的,但我想知道,如果我检索score,我是否不必通过运行另一个数据库检查将有序值重新分配给它们对应的name?还是可以一次性完成所有工作?
    • 您是否正在运行 2 个查询?如果是这样,将查询分组(请参阅我的编辑)。
    • 目前是的。我在谷歌搜索后才发现这个。它完全符合我的要求...tizag.com/mysqlTutorial/mysqlorderby.php
    • 大声笑很确定这就是我的建议。无论如何希望它现在可以工作。
    • 是的,我只是想看一个例子。再次感谢
    【解决方案2】:

    只是为了扩展 Josh 的答案....

    我需要按分数对团队进行排序...一个多维数组,例如 $teaminfo[$name][$score]

    WTF?如果一个团队只能有一个分数,为什么要尝试在数组中保留一个值?您只需要一个简单的数组(顺便说一句:PHP 数组不是多维的 - 它们是嵌套的):

    $s=mysql_query("SELECT team, score FROM yourtable");
    while($r=mysql_fetch_assoc($s)) {
       $data[$r['team']]=$r['score'];
    }
    arsort($data);
    

    但是,在将数据库中的数据返回给 PHP 之前对其进行排序会快得多。 OTOH,您可能对每个 $team 的 $score 有多个值 - 我们不知道这些值如何组合以确定顺序 - 按最大值计算?平均?全部的?别的东西?在这种情况下,您可能需要一个子查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 2011-01-26
      相关资源
      最近更新 更多