【发布时间】:2015-12-21 22:22:49
【问题描述】:
一位客户正在寻找要在她的网站上实施的积分系统,我正在努力根据收集的积分数量来显示用户,我希望有人可以在这里帮助我并指出我使此代码正常工作的正确方向。
我正在从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_access 和 ORDER BY sum(ap_points.points_added) 但这些也不起作用。
当前的代码要么没有显示结果,要么没有显示错误的单个结果?我不确定是否需要使用某种 Group By 函数来连接两个表中的 user_ids ?
【问题讨论】:
-
这些表中有记录吗? select a.user_id,a.first_name,a.last_name,a.display_img,sum(b.points_added) total_points from ap_users a,ap_points b 其中 a.hub_access=1 group by a.user_id order by sum(b.points_added)
-
是的,表中有记录,如果我将 SQL 编辑为简单,它确实会显示记录,只有当我尝试订购它们时。你在哪里有
sum(b.points_added) total_points应该是这样还是应该是sum(b.points_added) as total_points? -
用'as'试试。我对mysql语法不熟悉。
-
它正在工作,并显示结果,尽管它正在计算系统中的所有积分,而不是按
user_id对它们进行分组,因此所有用户都有相同数量的积分。