php - 如何使用mysql和php进行排名

标签 php mysql sorting

我和我的 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/

相关文章:

PHP if 和 while 语句无法正常工作

MySQL - 如何对数字上的字母数字数据进行排序

python - 在python中对字母数字字典键进行排序

php - 使用函数参数动态生成查询

python - 在 Django/MySQL 中创建单例表的最佳方法

php - 消息和视频共享youtube php

php - PHP/MySQL 中的更新查询失败,错误代码 1064,SQLState 42000

arrays - 在 Swift 中按不同的属性值对自定义对象进行排序

javascript - Yii2 下拉列表 onchange 重定向到 URL

PHP 使用 SplClassLoader 自动加载?