2016-12-11 5 views
1
$query = "SELECT uo.*, 
       (
        SELECT COUNT(*) 
        FROM Score ui 
        WHERE (ui.score) >= (uo.score) 
       ) AS rank 
      FROM Score uo 
      WHERE name = '$politestring';"; 

私のdbはidkw0tであり、DB名はidkw0tです。私はそれに一つのテーブルを持っています - UsersUsersテーブルは、4つの列、すなわちID,Name,Score,Cashを有する。彼の名前でユーザーの階級を取得

SQLクエリで特定のユーザーのランクを自分の名前で取得するにはどうすればよいですか。 ジョー[500点]、トム[10点]、ジョン[50点]という3つの名前がある場合と同様です。 私はトムのランクを尋ねると、トムが3ランクだと言ってエコーするはずです。ジョーのランクに尋ねると、ジョーが1位であると言ってエコーするはずです。

私のDBは:

select count(*) 
from score s 
where s.score >= (select s2.score from score s2 where s2.name = $name); 

注:これはおそらくつながりがある場合は、予想される結果を返します

http://image.prntscr.com/image/7ca1ddef8cd7491d81cd9e7ee5560b77.png

+0

使用しているデータベースで質問にタグを付けてください。 –

+0

ユーザーまたはスコア表を意味しますか? –

+0

@GordonLinoff私のDB - http://prntscr.com/di5mjg –

答えて

0

あなたは多少異なる方法を使用することができます。上記はあなたの質問に基づいています。

select 1 + count(*) 
from score s 
where s.score > (select s2.score from score s2 where s2.name = $name); 

上記はクエリの記述方法の例です。アプリケーションからこれを呼び出す場合は、必ずパラメータ化されたクエリを使用してください。

+0

これは私のコードです - http://pastebin.com/wNL6jy64 –

+0

何が間違いですか? –

+0

mysqli_を使用して、できる限りクエリ内の値に常にパラメータを使用します。 –

関連する問題