0 レビュー
2 回答
php-特定のエントリの行番号を取得します
PlayerNameとPlayerRatingの2つの列を持つLeaderboardというテーブルがあります。特定のPlayerNameにアクセスして、PlayerRatingを取得できるようにしたいのですが、ランクも取得したいのです(例:彼らは1位、2位、10位ですか?)。私はいくつか読んで方法を見つけましたが、それをPHPに変換して、実際に値を出力することはできないようです。私はMySQLiやPHPの経験があまりないことを覚えておいてください。
現在、PlayerRatingを次のように取得しています:
$CurrentRating = $Connection->query("SELECT CurrentRating FROM Leaderboard WHERE PlayerName='$PlayerName'")->fetch_assoc()["CurrentRating"];
echo $CurrentRating;
するだけで、作業は完了です。 PlayerRankを見つけるために、クエリがどのようにあるべきかを説明するいくつかの投稿を見つけました
SET @rank=0; SELECT @rank:[email protected]+1 As rank
つまり、私が思うに、最初は次のようになります。
query( "SET @rank=0; SELECT @rank:[email protected]+1 As rank、CurrentRatingFROMリーダーボード[...]
しかし、私はそれを機能させて、正しく印刷するためのランクを取得することができないようです。 $CurrentRating["rank"]
と次のいくつかのバリエーションをエコーしてみました:
$ CurrentRank = $ Connection-> query( "SET @rank=0; SELECT @rank:[email protected]+1 As rank、SELECT CurrentRating FROM Leaderboard WHERE PlayerName ='$ PlayerName'")-> fetch_assoc()["rank"];
誰かが私がこれを正しく書くのを手伝ってくれませんか? よろしくお願いします!
わからない
0
レビュー
答え :
解決策:
CurrentRatingに基づいてランク付けする場合は、クエリは次のようになります。
クエリ
SELECT
Leaderboard.PlayerName
, Leaderboard.PlayerRating
, (@rank := @rank + 1) AS rank
FROM
Leaderboard
CROSS JOIN(
SELECT
@rank := 0
)
AS
init_user_variable
ORDER BY
Leaderboard.CurrentRating DESC
whereフィルターを使用したランキングが必要な場合は、このような配信されたテーブル内でこのクエリを使用する必要があります。
クエリ
SELECT
Leaderboard_ranked.PlayerName
, Leaderboard_ranked.PlayerRating
, Leaderboard_ranked.rank
FROM (
SELECT
Leaderboard.PlayerName
, Leaderboard.PlayerRating
, (@rank := @rank + 1) AS rank
FROM
Leaderboard
CROSS JOIN(
SELECT
@rank := 0
)
AS
init_user_variable
ORDER BY
Leaderboard.CurrentRating DESC
)
AS
Leaderboard_ranked
WHERE
Leaderboard_ranked.PlayerName = 'playername'
PHPMySQLi構文
$connection = mysqli_connect("host/ip", "user", "password", "database");
$result = mysqli_query($connection, [query]);
while($row = mysqli_fetch_array($result)) {
echo $row['PlayerName'] . " " . $row['PlayerRating'] . " " . $row['rank'] "<br />"
}
わからない
0
レビュー
答え :
解決策:
SELECT COUNT(*) FROM Leaderboard WHERE CurrentRating > ?
ユーザーの場合パラメータとしての現在の評価は多かれ少なかれ十分である必要があります
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。