我有一个网站,会根据用户在某些活动中获得的积分对用户进行排名。这是我的数据库结构:
pointsentered
1. ID
2.电子邮件
3.代码
pointvalues
1. ID
2.代码
3.标题
4.价值
我有一个连接到 pointsentered 的文件,并将用户选择提交给它。 " Code" field对应 pointvalues 。
在 pointvalues 中,"标题"对应于他们完成的事件的名称。代码是一个简单的字母数字代码,对应于特定事件及其拥有的值。 "值"是相当自我解释的,因为它包含事件所涉及的点值。
基本上,我希望有一个脚本 1.根据 pointsentered 中的输入点对所有用户(拥有不同电子邮件)进行排名(但根据"代码"从 pointvalues 获取积分; ) 2.显示用户已达到的点数。它与用户的电子邮件有关。
显然,我不是在寻找有人为我这样做,我只是在寻找一些关于如何开始的指导,因为我迷失了。
提前致谢。
答案 0 :(得分:0)
通过简单的查询,这应该很容易实现:
SELECT pe.Email, SUM(pv.Value) as 'total_points' FROM pointsentered pe
JOIN pointvalues pv ON pe.Code = pv.Code
GROUP BY pe.Email
ORDER BY total_points DESC
这里有两个表pointsentered
和pointvalues
。 pointsentered
表包含获得积分的人的Email
(pe.Email)。该表中还有一个Code
(pe.Code),它对应于pointvalues
表中的一行。因此,我们可以查询pointsentered
和JOIN
pointvalues
表,以获取所有获奖积分的列表,获奖者的电子邮件以及获得的积分数。我们还可以通过电子邮件将聚合函数应用于点值(SUM)和组,从而产生所有唯一电子邮件的列表以及奖励给该电子邮件的总点数,从最高总点数开始(DESC) )。