1

私は RPG を所有しており、ユーザー モンスターのすべてのレベルを合計してエンド ナンバーを取得したいと考えています。

だから私はそれを1人のユーザーに絞り込み、うまく機能しました。

$_SESSION['username'] = "smbisme";


$query = "SELECT belongsto, SUM(level) FROM user_pokemon WHERE `belongsto` = '".$_SESSION['username']."' "; 

$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)){
    echo $row['belongsto'];
    echo "". $row['SUM(level)'];
    echo "<br />";
}

これは、ユーザー「smbisme」に対して表示され、機能しますが、すべてのユーザーに対して実行したいと考えています。

だから私はそのようにどこから出ようとします。

$query = "SELECT belongsto, SUM(level) FROM user_pokemon  "; 

$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)){
    echo $row['belongsto'];
    echo "". $row['SUM(level)'];
    echo "<br />";
}

しかし、何らかの理由で最高の結果 (1 結果) しか得られません。

4

2 に答える 2

1

SUMは集計関数なので、group by

SELECT belongsto, SUM(level) as sumlevel FROM user_pokemon group by belongsto order by sumlevel DESC
于 2012-09-13T12:39:32.470 に答える
1

複数の行の集計には、group by ステートメントを使用する必要があります。

SELECT 
    belongsto, 
    SUM(level) 
FROM 
    user_pokemon 
group by 
    belongsto

PLB がコメントで指摘しているように、このコードはコード インジェクションに対して脆弱です。この結果を得るには、代わりに準備済みステートメントを使用することを検討する必要があります。注射はいらないので大丈夫です。

列または集計で並べ替えるには:

SELECT 
    belongsto, 
    SUM(level) as sumLevel 
FROM 
    user_pokemon 
group by 
    belongsto 
order by 
    sumLevel desc
于 2012-09-13T12:39:18.320 に答える