0

出力処理が次のようになるクエリが 1 つあります。

 while($row = mysql_fetch_array($result)){
    echo $row['username'] . " " . $row['earning'];
 }

出力結果は次のようになります。

 JOHN  200
 JOHN  350
 NEO   100
 NEO   220

私が達成したいのは、すべての名前が 1 回表示され、「収益」がその名前のすべての収益の合計であるということです。次のようになります。

 JOHN 550
 NEO  320

クエリを変更することはできません。それが最大の問題です。

希望はありますか?いくつかの提案?:)

4

5 に答える 5

4

試す:

$user = array();

while($row = mysql_fetch_array($result)){
    $user[$row['username']]  += $row['earning'];
 }

エコーを行うには:

foreach($user as $key => $value) {
    echo $key."=". $earnings."<br>";
}
于 2012-07-03T20:05:28.063 に答える
4

ループ内の値を別の配列に合計してから出力できます。

試す:

$earnings = array();

while($row = mysql_fetch_array($result)) {
    if (!isset($earnings[$row['username']])) $earnings[$row['username']] = 0;
    $earnings[$row['username']] += $row['earning'];
}

foreach($earnings as $user => $earnings) {
    echo "$user  $earnings<br />\n";
}
于 2012-07-03T20:07:30.663 に答える
1

この答えをすばやく解決するには、これらの結果を関連付けられた配列に単純に追加し、それをループして最終的なカウントを取得します。

したがって、次のようなものです。

 $names= array();

 while($row = mysql_fetch_array($result)){
    $names[$row["username"]] += $row["earning"];
 }

 foreach($names as $k => $v) {
    echo $k." ".$v."\n";
 }
于 2012-07-03T20:09:52.583 に答える
0

mysql側でこれを試してください。php側で計算する必要はないので、PHP側のコードを変更しないでください。jstchange query this like

SELECT
  username,
  SUM(earning)
FROM yourtable
GROUP BY (username)

それがあなたのために働くことを願っています

于 2012-07-04T06:50:08.003 に答える
0

データを選択するだけでなく、合計する数値を持つSUM(otherfield)フィールドを選択します。次に、最初のフィールドをotherfield追加します。GROUP BY

于 2012-07-03T20:05:31.437 に答える