我有一个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对应的位置。即:
$qtyArray = array();
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$qtyArray[$row[product_id]] += $row[qty];
}
我有两个问题:
谢谢!
答案 0 :(得分:8)
MySQL为您做到了这一点:
SELECT product_id, sum(qty)
FROM tablename
GROUP BY product_id
答案 1 :(得分:1)
至于第一个问题。它会起作用,但会发出“Undefined offset”的注释
还记得数组索引必须是字符串,所以
$qtyArray[$row['product_id']] += $row['qty'];
答案 2 :(得分:1)
如上所述 - 您最好使用群组查询,因为效率更高。
然而:
$qtyArray[$row[product_id]] += $row[qty];
除非已设置变量,否则将触发通知。这是因为它相当于:
$qtyArray[$row[product_id]] =
$qtyArray[$row[product_id]] + // First time around this won't exist
$row[qty];
如果(在其他情况下)你需要做类似的事情 - 如果有任何疑问,请检查数组键是否存在。