Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        5年前关闭。
                                                                                            
                
        
我有一个网站,该网站将根据用户因从事某些活动而获得的积分对其进行排名。这是我的数据库结构:

点输入
1. ID
2.电子邮件
3.代码

点值
1. ID
2.代码
3.标题
4.价值

我有一个连接到pointsented的文件,并将用户选择的文件提交给它。 “代码”字段对应于点值。

在点值中,“标题”对应于它们完成的事件的名称。该代码是一个简单的字母数字代码,对应于该特定事件及其所保存的值。 “值”很容易解释,因为它保存了事件所涉及的点值。

本质上,我想拥有一个脚本
1.根据输入的点数对所有用户(拥有不同电子邮件的用户)进行排名(但根据“代码”从点值中获取点数)
2.显示用户获得了多少分。它与用户的电子邮件有关。

显然,我并不是在找别人为我做这件事,我只是在寻找一些入门指南,因为我迷路了。

提前致谢。

最佳答案

通过以下类似的简单查询,应该很容易实现:

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


这里发生的是您有两个表pointsenteredpointvaluespointsentered表包含获得积分的人的Email(pe.Email)。该表中还有一个Code(pe.Code),它对应于pointvalues表中的一行。因此,我们可以对pointsenteredJOIN pointvalues表进行查询,以获取所有奖励积分的列表,获奖人员的电子邮件以及奖励积分的数量。我们还可以将聚合函数应用于点值(SUM)并按人员电子邮件分组,以列出所有唯一电子邮件以及授予该电子邮件的总点数列表,从最高总点数(DESC)开始)。

关于php - PHP排名算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25857263/

10-13 09:51