从一个表中选择数据,按照另一个表中的数据总和进行排列

时间:2015-12-21 22:22:49

标签: php select mysqli sum

客户正在寻找在她的网站上实施的积分系统,我很难根据收集的积分显示用户,我希望有人可以帮助我在这里并指出我正确的方向,以使此代码正常工作。

我正在从ap_users中选择所有数据,在代码中我也尝试从ap_points中选择所有数据,尽管我不需要来自任何一个表的所有数据,具体我只需要:

ap_users:
     user_id
     first_name
     last_name
     display_img
     hub_access

ap_points:
     user_id
     points_added

我认为选择所有数据可能是最简单的路线,让你决定。

我正在尝试选择并显示hub_access = '1'的所有用户,并按照最高优先级points_added排序。点数按行分别添加,需要加起来(这就是为什么我有sum函数)。

$sql = "SELECT * FROM `ap_users`, `ap_points` WHERE `hub_access` = '1' ORDER BY sum(points_added) DESC";

我也尝试将其配置为特定的表格,如:

ap_users.hub_accessORDER BY sum(ap_points.points_added)但这些也无效。

此当前代码是显示无结果还是显示没有错误的单个结果?我不确定是否需要使用某种Group By函数来连接两个表中的user_ids?

1 个答案:

答案 0 :(得分:0)

SUM是一个聚合函数。如果您想要每个user_id的总和,则应按user_id进行分组。

这样的东西
SELECT *, sum(points_added) as sum_points FROM app_users 
JOIN app_points ON app_users.user_id = app_points.user_id
WHERE `hub_access` = '1' 
GROUP BY app_users.user_id
ORDER BY sum_points;

我没有测试过该查询,但这应该让您了解解决方案。