私はランキングテーブルを持っており、そこにはすべてのプレイヤーがランク付けされています。
id | rank | playername | is_available | ranking_name | ranking_id
-------------------------------------------------------------------
1 | 1 | testname1 | 1 | australia open | 1
2 | 2 | testname2 | 1 | australia open | 1
3 | 3 | testname3 | 0 | australia open | 1
4 | 4 | testname4 | 1 | australia open | 1
5 | 1 | testname5 | 1 | japan open | 2
このテーブルは巨大で、ranking_idごとに500人以上のプレーヤーがいる可能性があります。これで、すべてのプレーヤーは、自分よりx%上の上位プレーヤーとの試合に挑戦できます。このxはsuperadminによって設定されます。x = 10の場合、プレーヤー "testname4"はチャレンジできます(ranking_id * 10/100のプレーヤーの数)= 4 * 10/100 = 0.4は1に丸められます。したがって、testname4は彼の上の1人のプレーヤーにチャレンジできます。しかし、彼の上記のプレーヤー「testname3」は利用できません。したがって、彼は次に利用可能なプレーヤーを与えられるべきです。私は次のような出力が欲しい
//testname4 can challenge below players
id | rank | playername | status |
--------------------------------------
2 | 2 | testname2 | available |
3 | 3 | testname3 | not available |
私がしたこと:
//testname4 wants to challenge. So i know his rank and other information
$selectSql = mysql_query("SELECT * from rankingTable where ranking_id = 1 AND rank < 4");
これは私にも「testname1」レコードを与えています。どうすればこれを制限できますか?そして、最も大きな問題は、ランクを昇順で表示する必要があることです。ここまでの注文は簡単ではありません。