我和我的朋友正在选择一个群组名称,而我正在尝试进行此排名,我们所有人都会根据我们的偏好对名称顺序进行排序。 我的程序应根据订单进行计算。
例如,如果我排序" JAIME" 1和" CERSEI" 2," JAIME"得到10分和" CERSEI" 8点。如果我的朋友排序" 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脚本,每个朋友都可以对名称列表进行排序。订单号自动输入mysql db。
所以,例如:
"id" --> 1
"name" --> JAIME
"riccardo" --> 1
"roberto" --> 2
"marika" --> 5
1, 2, 5 are the order list number
现在我来到这里,我不知道如何根据订单列表获得排名:(
希望我的问题可以理解
谢谢
答案 0 :(得分:3)
首先,我要考虑稍微改变您的架构。目前添加好友意味着添加列(这也意味着更新您的查询)。最好先说一下朋友桌,然后再找一张朋友姓名评级表。
然而,根据您所获得的位置计算得分是:
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
第二个查询意味着您可以更轻松地添加和删除朋友,这不会更改代码或数据库架构。