私は馬の評価システムに取り組んでおり、別の(すでに入力されている)フィールドの値に基づいて各馬に値を割り当てる必要があります(これはすべてMySQLデータベースに保存されています)。
次の簡単な例を考えてみましょう:-
各馬のオッズが次のとおりである 4 つの競馬:-
馬 A - 2/1 馬 B - 3/1 馬 C - 3/1 馬 D - 5/1
馬 A が最低価格なので、値を 1 にします。
ただし、馬Bと馬Cは同じ価格なので、両方に2を付けたい.
馬 D は 2 番目に高い価格なので、3 の値を付けたいと思います。
これをやり始めたときは簡単だろうと思っていましたが、今ではループが私を夢中にさせる段階に達しています。どんな提案でも大歓迎です。
よろしくお願いします。
以下に Daan から受け取った回答を考慮して、私のテーブルにはいくつかのサブセットがある (つまり、特定の日に複数のレースが含まれており、それらを個別にランク付けする必要がある) という事実によって、問題がさらに悪化していることも付け加えておく必要があります。 .
私のテーブルは現在:-
レース日程 | レースタイム | 競馬場 | 馬名 | 予測 | 予測率 | 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());
}
}