使用 PHP 排序,但某些条目可以具有相同的值


Ordering using PHP but some entries can have the same value

我正在研究一个马评级系统,我需要根据另一个(已填充(字段的值为每匹马分配值(所有这些都存储在 MySQL 数据库中(。

考虑以下简化示例:-

四匹马的

比赛,每匹马的赔率如下:

马 A - 2/1马 B - 3/1马 C - 3/1马 D - 5/1

由于马 A 的价格最低,我想给它一个值 1。

但是,马 B 和 C 的价格相同,所以我想给他们 2。

马 D 的价格次高,所以我想给它值 3。

当我第一次开始这样做时,我认为这很容易,但现在它已经到了循环让我循环的阶段。任何建议将不胜感激。

提前非常感谢。

鉴于我在下面从Daan收到的回复,那么我还应该补充一点,我的表格有几个子集(即它在任何一天包含不止一场比赛,它们需要单独排名(,这一事实进一步加剧了我的问题。

我的桌子目前是:-

比赛日期 | 比赛时间 | 赛马场 | 马名 | 预测 | forecast_rate | ID

为此,

比赛日期将始终相同。赛马时间和赛马场共同标识了所讨论的比赛。

预测是给每匹马的价格(在这个阶段已经输入了(,这是需要对它进行共享排名才能存储在forecast_rate中的东西。

id 只是表中每个条目的唯一索引。

这就是我现在必须做的(它不起作用...惊喜...

    $testdude=mysql_query("SELECT DISTINCT racecourse,racetime FROM picking") or die(mysql_error());
while($rih=mysql_fetch_array($testdude)){
$testdude1=mysql_query("SELECT s1.forecast, s1.horsename, COUNT(DISTINCT s2.forecast) AS rank FROM picking s1 JOIN picking s2 ON (s1.forecast <= s2.forecast) GROUP BY s1.horsename;");
while($rih1=mysql_fetch_array($testdude1)){
mysql_query("UPDATE picking SET forecast_rate='$testdude1[rank]' where horsename='$testdude1[horsename]'") or die(mysql_error());
}
}

这称为共享排名,在MySQL中执行此操作最容易。看看本教程,看看你是否可以让它工作。如果没有,请提供有关您的桌子布局的更多详细信息,我将为您提供量身定制的示例:)