как максимально эффективно считать и ранжировать данные в php - PullRequest
1 голос
/ 12 мая 2009

Я не новичок в программировании, но я новичок в 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 ]

9 голосов
/ 12 мая 2009

По вашему запросу:

SELECT user, COUNT(*) AS reviews
FROM <table name>
GROUP BY user
ORDER BY reviews DESC;
3 голосов
/ 12 мая 2009

Иногда программистам проще объяснить себя с помощью кода:

// 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. Распечатайте нужный вывод.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...