我有一个产品目录,每个产品有两个数量(products_quantity和products_incoming_quantity),一些产品在group_id下分组在一起。
我试图给属于同一组的产品相同的数量,这是所有数量的总和。
我尝试使用GROUP_BY,但我很难编写mysql代码,因为group_id在另一个表中。
产品表:
|-------------|---------------|-------------------|----------------------------|
| products_id | products_name | products_quantity | products_incoming_quantity |
|-------------|---------------|-------------------|----------------------------|
| 10 | Product A | 05 | 02 |
|-------------|---------------|-------------------|----------------------------|
| 11 | Product B | 15 | 08 |
|-------------|---------------|-------------------|----------------------------|
| 12 | Product C | 12 | 00 |
|-------------|---------------|-------------------|-------------------------产品到分组表
|---------------------|-------------------|
| products_id | Group_ID |
|---------------------|-------------------|
| 10 | 01 |
|---------------------|-------------------|
| 11 | 01 |
|---------------------|-------------------|查询:
$listing_sql = "select
p.products_id,
p.products_quantity, p.products_incoming_quantity,
(p.products_quantity + p.products_incoming_quantity) AS sub_quantity,
g.products_id,
g.group_id
FROM " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS . " WHERE
p.products_id = g.products_id";我尝试添加新字段"total_quantity“来输出数量值,如下所示:
产品A total_quantity = 30产品B total_quantity = 30
数量相同,因为它们属于同一组。
我需要一些帮助来创建这个查询。
谢谢:)
发布于 2019-01-12 21:28:52
您可以连接到子查询,该子查询按组聚合并查找总数量:
SELECT
p.products_id,
p.products_quantity,
p.products_incoming_quantity,
(p.products_quantity + p.products_incoming_quantity) AS sub_quantity,
t.total_quantity,
g.products_id,
g.group_id,
FROM products p
INNER JOIN product_groups g
ON p.products_id = g.products_id
INNER JOIN
(
SELECT
g.group_ID,
SUM(p.products_quantity + p.products_incoming_quantity) AS total_quantity
FROM products p
INNER JOIN product_groups g
ON p.products_id = g.products_id
GROUP BY g.group_ID
) t
ON g.group_id = t.group_id;请注意,我将查询语法转换为使用显式内部联接,而不是老式的基于逗号的隐式联接。我编写查询的方式是现代编写查询的首选方式。
如果您使用的是MySQL 8+或更高版本,我们也许能够简化分析函数的使用。
https://stackoverflow.com/questions/54159239
复制相似问题