-4

以下に示すように、「ポイント」という名前のテーブルがあります。

名前 | 点
abc 10
コード 5
efg15

特定の名前のランクを見つける方法は?

例: 上記の場合、cde のランク 3

4

2 に答える 2

0

これはあなたのSQLクエリになります:

SELECT t.name FROM sometable t ORDER BY t.point DESC;

PHPでクエリを実行すると、ソートされた結果セットが得られます。次に、自分の名前が見つかるまで、その結果セットを数えます。それがあなたのランクです。ランクを別の方向に移動させたい場合は、に変更DESCします。ASC関数の内容は次のようになります。

$rankingQuery = SELECT t.name FROM sometable t ORDER BY t.point DESC;
try {
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    $rank = 0;
    $sth = $dbh->prepare($rankingQuery);
    $sth->execute();

    $name = $sth->fetchColumn(); 
    while ($name) {
      $rank = $rank + 1;
      if ($name == $DESIRED_NAME {
        return $rank;
      }
      $name = $sth->fetchColumn();
    }
    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
于 2013-04-18T18:19:25.777 に答える