sql按用户记录的距离总和排序用户

时间:2013-01-27 22:08:01

标签: php mysql sql wordpress

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

首先,我找到所有用户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查询对其进行排序?

1 个答案:

答案 0 :(得分: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中的每次更改时对其进行更新。