我有一个查询,其中输出处理如下所示:
while($row = mysql_fetch_array($result)){
echo $row['username'] . " " . $row['earning'];
}
输出结果如下:
JOHN 200
JOHN 350
NEO 100
NEO 220
我想要实现的是每个名字出现一次,并且"赚取"是该名称的所有收入的总和,如下所示:
JOHN 550
NEO 320
我必须提到我 CAN NOT 更改查询;这是最大的问题。
有希望吗?一些建议? :)
答案 0 :(得分:4)
尝试:
$user = array();
while($row = mysql_fetch_array($result)){
$user[$row['username']] += $row['earning'];
}
做回声:
foreach($user as $key => $value) {
echo $key."=". $earnings."<br>";
}
答案 1 :(得分: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";
}
答案 2 :(得分:1)
要快速找到这个答案的解决方案,您可能只想将这些结果附加到关联的数组中,然后简单地将其循环以获得最终计数。
所以,像这样:
$names= array();
while($row = mysql_fetch_array($result)){
$names[$row["username"]] += $row["earning"];
}
foreach($names as $k => $v) {
echo $k." ".$v."\n";
}
答案 3 :(得分:0)
不是仅仅选择数据,而是选择字段SUM(otherfield)
,其中otherfield
是要求求和的数字的字段。然后使用第一个字段添加GROUP BY
。
答案 4 :(得分:0)
在mysql端尝试这个你不需要在php端计算所以不要改变你的PHP端代码jst更改查询这样
SELECT
username,
SUM(earning)
FROM yourtable
GROUP BY (username)
希望它能为你效劳