如何尽可能高效地在php中对数据进行计数和排名

时间:2009-05-11 20:39:50

标签: php mysql ranking

我不是编程新手,但我是MySQL和PHP的新手。我想知道最有效的方法是做什么。我不需要实际的代码,只需要步骤。

我有一份用户评论列表,简单地说:

USER    REVIEW  
Bob     nice
John    good
Fred    bad
Bob     poor
Bob     the best
Fred    medicre
Bob     shiny

我希望能够创建评论最多的评论者列表,即

USER REVIEWS
Bob  4
Fred 2
John 1

这是以最有效的方式实现这一目标的最佳方式

欢呼声!!

2 个答案:

答案 0 :(得分:9)

如您的查询:

SELECT user, COUNT(*) AS reviews
FROM <table name>
GROUP BY user
ORDER BY reviews DESC;

答案 1 :(得分:3)

有时候程序员用代码解释自己会更容易:

// Credit to Chad Birch for the query...
$query = "SELECT user, COUNT(*) AS reviews 
          FROM <table name>
          GROUP BY user
          ORDER BY reviews DESC";

$res = mysql_query($query);
if(mysql_num_rows($res) > 0) {
    $res_array = mysql_fetch_assoc($res);
    $list = "<h1>USER REVIEWS</h1>\n";
    foreach($res_array as $user) {
        $list .= $user['user'].' '.$user['reviews']."<br />\n";
    }
}

echo $list;

所以,基本上,9/10次,最好让SQL进行排序和填充,因为它在这样的东西上更有效率。

  1. 执行SQL查询并对结果进行排序
  2. 让PHP检查是否有任何结果返回。
  3. 让PHP将结果转换为数组/对象
  4. 让PHP横向数组,提取所需内容
  5. 打印您想要的输出。