0

我有一个查询,其中输出处理如下所示:

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

输出结果是这样的:

 JOHN  200
 JOHN  350
 NEO   100
 NEO   220

我想要实现的是每个名字都出现一次,而“收入”是该名字所有收入的总和,如下所示:

 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

不只是选择数据,而是选择字段并SUM(otherfield)作为otherfield要求和的数字的字段。然后添加GROUP BY第一个字段。

于 2012-07-03T20:05:31.437 回答
0

在mysql端试试这个你不需要在php端计算所以不要像这样更改你的PHP端代码jst更改查询

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

希望它对你有用

于 2012-07-04T06:50:08.003 回答