1

我需要一些帮助来对项目 ID 的数量进行分组和求和。

来自数据库的数据:

products
id  code    name            price
1   1234    Product name    12
2   1235    Product name    12
3   1236    Product name    12

warehouses_products
product_id   warehouse_id   quantity
1           1               12
2           1               0
2           2               3
3           1               1
3           2               1

PHP 获取数据。

$db = new PDO('mysql:host=localhost;dbname=data2;charset=utf8', 'user2', 'Password');

foreach($db->query('SELECT * FROM products as pr INNER JOIN warehouses_products AS s ON (s.product_id = pr.id) group by pr.id') as $row) {
echo $row["code"] . ' ' . $row["quantity"];
}

一个例子:如果我在 2 个仓库上有相同的代码,这只有 1 个,我想要的是按 product_id 对数量和分组求和。

任何帮助表示赞赏。

4

2 回答 2

2

试试这个 :

'SELECT *, SUM(s.quantity) AS sum_quantity FROM products as pr INNER JOIN warehouses_products AS s ON (s.product_id = pr.id) group by pr.id'

在你的foreach

echo $row["code"] . ' ' . $row["sum_quantity"];
于 2013-03-13T13:04:36.910 回答
0

询问:

SELECT p.id, p.code, SUM(wp.quantity) as quantity
FROM products p
JOIN warehouses_products wp ON wp.product_id = p.id
GROUP BY p.id, p.code

PHP:

$db = new PDO('mysql:host=localhost;dbname=data2;charset=utf8', 'user2', 'Password');

foreach($db->query('SELECT p.id, p.code, SUM(wp.quantity) as quantity FROM products p JOIN warehouses_products wp ON wp.product_id = p.id GROUP BY p.id, p.code') as $row) {
echo $row["code"] . ' ' . $row["quantity"];
}

请记住,我们依赖于产品表中的 code 和 id 是唯一一对这一事实。

于 2013-03-13T13:06:16.450 回答