0

私は馬の評価システムに取り組んでおり、別の(すでに入力されている)フィールドの値に基づいて各馬に値を割り当てる必要があります(これはすべて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());
}
}
4

1 に答える 1

0

これは共有ランキングと呼ばれ、MySQL でこれを行うのが最も簡単です。このチュートリアルを見て、それが機能するかどうかを確認してください。そうでない場合は、テーブル レイアウトの詳細をお知らせください。カスタマイズされた例をご紹介します :)

于 2012-05-08T22:25:35.950 に答える