我和我的 friend 们正在选择一个组名,我正在尝试制作这个排名,我们所有人都根据自己的喜好对名称顺序进行排序。 我的程序应该根据顺序进行计算。
例如,如果我对“JAIME”1 和“CERSEI”2 进行排序,“JAIME”获得 10 分,“CERSEI”获得 8 分。如果我的 friend 对“JAIME”1 和“CERSEI”6 进行排序,“JAIME 得到 10 分,而“CERSEI”没有分数。 因此,排名将是:
1- JAIME 20 分 2- CERSEI 8 分
我在 mysql 中有一个名为“NAMES”的简单表,其中包含这些字段
"id"
"name"
"riccardo"
"roberto"
"marika"
(and others friend names)
用一个Jquery脚本,每个 friend 都可以对名单进行排序。订单号自动输入到 mysql 数据库中。
所以,例如:
"id" --> 1
"name" --> JAIME
"riccardo" --> 1
"roberto" --> 2
"marika" --> 5
1, 2, 5 are the order list number
现在我到了这里,我不知道如何继续根据订单列表获得排名:(
希望我的问题能被理解
谢谢
最佳答案
首先,我会考虑稍微更改您的架构。目前添加 friend 意味着添加列(这也意味着更新您的查询)。最好说一个 friend 表,然后是一个 friend 姓名评级表。
然而,对于给定位置的分数,您的计算结果是:
10-((score-1)*2)
鉴于此,我们可以创建一个查询来获取名称的分数:
SELECT id, name, 10-((riccardo-1)*2) + 10-((roberto-1)*2) as score-- Plus all other names
FROM names
ORDER BY score
使用更常见的模式,查询看起来像这样:
SELECT names.id, names.name, SUM(10-((names_ratings.rating-1)*2)) as score
FROM names
LEFT JOIN names_ratings ON (names.id = names_rating.name_id)
ORDER BY score
第二个查询意味着您可以更轻松地添加和删除 friend ,这不会更改代码或数据库架构。
关于php - 如何使用mysql和php进行排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28503337/