gpt4 book ai didi

php - mysql对2个group by上的同一列求和

转载 作者:行者123 更新时间:2023-11-29 11:49:21 25 4
gpt4 key购买 nike

我有这张表:

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

所以我需要按不同的 codf 进行数量分组求和,并按不同的 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 中做到这一点,那真的会对我有帮助

谢谢,如果我拼写错误,英语不是我的主要语言:)

最佳答案

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;

关于php - mysql对2个group by上的同一列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34402824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com