[英]Effective wayto sum values in MySQL table rows
我有一个看起来像这样的MySQL表:
+--------------------------------------+
| id | product_id | qty |
+--------------------------------------+
| 1 | 0 | 1 |
| 2 | 1 | 3 |
| 3 | 0 | 2 |
| 4 | 2 | 18 |
+--------------------------------------+
我想获取表中每种产品的总数。 因此,例如,对于上表,这是我想要的结果:
0-> 3
1-> 3
2-> 18
我认为最简单的方法是遍历MySQL结果,并将每种产品的数量添加到数组中数组中与product_id相对应的位置。 IE浏览器:
$qtyArray = array();
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$qtyArray[$row[product_id]] += $row[qty];
}
我有两个问题:
谢谢!
MySQL为您做到这一点:
SELECT product_id, sum(qty)
FROM tablename
GROUP BY product_id
至于第一个问题。 它将起作用,但是将发出“未定义的偏移量”通知
还请记住,数组索引必须是字符串,因此
$qtyArray[$row['product_id']] += $row['qty'];
如前所述-最好使用群组查询,因为这样效率更高。
然而:
$qtyArray[$row[product_id]] += $row[qty];
除非已设置变量,否则这将触发通知。 那是因为它等效于:
$qtyArray[$row[product_id]] =
$qtyArray[$row[product_id]] + // First time around this won't exist
$row[qty];
如果(在其他情况下)您需要执行类似的操作-如有疑问,请检查数组键是否存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.