1

我正在使用一个表格,其中包含用户报告的运动距离的日志。我想通过记录距离的总和对用户进行排名。

首先,我找到所有用户 ID:

select distinct wordpress_user_id from wp_exercise_log

然后我遍历它并获取名称和总和(距离):

    foreach($users as $user) {
// DISTANCE
    $user_distance = floor($wpdb->get_var( "select sum(distance) from wp_exercise_log where wordpress_user_id='$user'"));
// FULL NAME
  $user_info = get_userdata($user);
  $full_name = $user_info-> user_firstname . ' ' . $user_info-> user_lastname;
}

这是我的问题:除非我将它们附加到多维数组并使用 PHP 排序,否则我不确定如何对用户进行排名。

有没有更好的方法来选择所有这些数据并使用一个 SQL 查询对其进行排序?

4

1 回答 1

1
select
   wordpress_user_id, 
   sum(distance) as user_distance 
from 
   wp_exercise_log 
group by 
   wordpress_user_id 
order by 
   user_distance desc

请注意ORDER BY GROUP_FUNCTION()总是导致性能问题。

您可以考虑在user_total_distance您的用户表中添加一些列,并在wp_exercise_log.

于 2013-01-27T22:11:27.623 回答