我有这张桌子:
CREATE TABLE `stock` (
`id` int(11) NOT NULL,
`p_id` int(11) NOT NULL,
`quantity` decimal(11,2) DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
和这张表:
CREATE TABLE `products` (
`id` int(10) UNSIGNED NOT NULL,
`codf` bigint(20) UNSIGNED NOT NULL,
`ean` bigint(20) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我如何获得每种产品的codf和ean的总量
所以,例如,如果我有这个股票
id | p_id | quantity |
1 | 1 | 1 |
2 | 2 | 2 |
3 | 1 | 3 |
4 | 3 | 4 |
和那些产品:
id | codf | ean |
1 | 1 | 11 |
2 | 1 | 12 |
3 | 2 | 13 |
我需要
codf 1 = 6
codf 2 = 4
ean 11 = 4
ean 12 = 2
ean 13 = 4
所以我需要通过不同的代码和不同的ean分组数量分组来计算数量分组,ean也是唯一的
现在我在php中做,我选择所有行,左连接产品,我使用数组对它们进行分组并得到最终数量,如下所示:
select s.quantity, p.codf,p.ean from stock s left join products p on p.id = s.p_id
我有这个php:
while($r = mysqli_fetch_assoc($q)) {
$total[$r[ean]] += $r[quantity];
$total[$r[codf]] += $r[quantity];
}
并为每种产品显示我们库存的数量
codf = a number for similar products
ean = a unique number a product can have
但是如果我能在mysql中完成它会对我有所帮助
谢谢,对不起,如果我拼错了一些东西,英语不是我的主要语言:)
答案 0 :(得分:1)
SELECT ce
, val
, SUM(quantity) total
FROM
( SELECT 'codf' ce, codf val, s.quantity FROM products p JOIN stock s ON s.p_id = p.id
UNION
SELECT 'ean' ce, ean, s.quantity FROM products p JOIN stock s ON s.p_id = p.id
) x
GROUP
BY ce, val;