私はこのようなテーブルを持っている:php/mysql - ユーザーのランキングを取得するには?例えば
name rating matei 124 andrei 20 serj 25 john 190 mike 96 andy 245 tom 73
私は出力に次のようなもの(数による順位を)必要があります。
ジョンの位置は2です。または、tomの位置は5です。 (私はすべての結果を取得する必要はありません)
どうすればいいですか?事前に
おかげ
私はこのようなテーブルを持っている:php/mysql - ユーザーのランキングを取得するには?例えば
name rating matei 124 andrei 20 serj 25 john 190 mike 96 andy 245 tom 73
私は出力に次のようなもの(数による順位を)必要があります。
ジョンの位置は2です。または、tomの位置は5です。 (私はすべての結果を取得する必要はありません)
どうすればいいですか?事前に
おかげ
SELECT COUNT(*) + 1
FROM users
WHERE (rating, name) <
(
SELECT rating, name
FROM users
WHERE name = 'john'
)
注だろう。
テーブルは、より正式に、データベースの文献でrelationsとして知られている - 彼らは(彼らは「タプル」のセットです)注文することが保証されていないので、あなたの質問には意味がありません。注文/ポジションに依存する必要がある場合は、その情報をキャプチャして保存するために追加の列(自動インクリメントID列など)を定義する必要があります。
ORDER BY句で順序を明示的に指定しない限り、クエリ結果の行の順序は一般的にMySQLによって保証されません。
SELECT count(1) as position
FROM table
WHERE order_column <= {john's order_column value};
あなたは注文の列を持っていない場合は、私が最初に定義することができお勧めします、「ジョンの位置」とし「何トムさん:あなたは、いくつかの個別の注文の列を持っている場合は、次のようなクエリを使用することができます位置 "を意味する。
UPDATE: AFAIU、あなたは格付け(申し訳ありませんが、私が最初にそれを取得していない)によってソートされたリスト内の位置を取得したいです。したがって、評価はあなたのorder_columnになります。この場合、2人の男の子の評価が同じであれば、ポジションはどのように計算されますか?
ので、クエリは次のように見えることがあります。
SELECT count(1) as position
FROM table
WHERE
rating > (SELECT rating FROM table WHERE id={user's ID});
はそうのように動作しないオフセットでしょうか?
SELECT * FROM Table ORDER BY rating DESC LIMIT 1,6
これは、6行で設定されていない1行を返しますか?または私は間違っています、構文は、名前と評価の両方に重複して持つことになります場合は、このクエリは、それらの両方に同じ格付けを付与することを
SELECT * FROM Table ORDER BY rating DESC LIMIT 1 , {{POS}}
見て、はい私はユーザーを評価することで注文する必要がありますが、私はexaple(ジョンのランキングは2)のために、すべてのユーザーではなく、特定のユーザーのランキングを受信する必要があります。 – John
あなたの質問は何ですか?テーブルを照会する方法であれば、彼が持っている基本的なPHP/mySQLチュートリアル –