私はトーナメント システムを構築しており、次の 2 つの基準に基づいてチームを並べ替える必要があります。
- ポイント(3連勝で2ポイント)
- ゲームの違い (ゲームの勝敗)
これで、ポイント用のテーブル列が 1 つ、勝ったゲームごとに 1 つ、負けたゲームごとに 1 つになりました。
ポイントでソートされたデータベースから結果を取得します(ORDER BY points DESC)。問題は個人ランキング。チーム A とチーム B のポイント数が同じで、チーム B の方が勝ちゲームと負けゲームの差が正の場合、チーム B はチーム A よりも高くランク付けされます。
すべてのゲームが同時に行われるわけではなく、一部のチームはスケジュールに遅れをとっている可能性があるため、完全に可能なシナリオは、一方のチームが他方よりも多くの勝利を収めているが、差がより悪いということです。
今、私が思いついた唯一の解決策は次のとおりです。
- DBからデータを取得する(ポイント順)
- 各ポイント値の出現回数をカウントします (例: 9pts.x2、7pts.x5...)
- 手順 2 に従って、必要な配列の数を作成します。
- ポイント値に応じて、これらの配列にデータを並べ替えます。
- 配列の長さが 1 より長い場合は、勝ったゲームと負けたゲームの差で並べ替えます。
- 最終結果を印刷します。
これは私には非常に非効率的です。より良いアイデアはありますか?