首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >属于同一组的产品总数(group_id)

问属于同一组的产品总数(group_id)
EN

Stack Overflow用户
提问于 2019-01-12 19:41:24
回答 1查看 176关注 0票数 0

我有一个产品目录,每个产品有两个数量(products_quantity和products_incoming_quantity),一些产品在group_id下分组在一起。

我试图给属于同一组的产品相同的数量,这是所有数量的总和。

我尝试使用GROUP_BY,但我很难编写mysql代码,因为group_id在另一个表中。

产品表:

代码语言:javascript
复制
|-------------|---------------|-------------------|----------------------------|
| products_id | products_name | products_quantity | products_incoming_quantity |
|-------------|---------------|-------------------|----------------------------|
|      10     |   Product A   |         05        |             02             |
|-------------|---------------|-------------------|----------------------------|
|      11     |   Product B   |         15        |             08             |
|-------------|---------------|-------------------|----------------------------|
|      12     |   Product C   |         12        |             00             |
|-------------|---------------|-------------------|-------------------------

产品到分组表

代码语言:javascript
复制
|---------------------|-------------------|
|     products_id     |     Group_ID      | 
|---------------------|-------------------|
|          10         |         01        |
|---------------------|-------------------|
|          11         |         01        |
|---------------------|-------------------|

查询:

代码语言:javascript
复制
$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

数量相同,因为它们属于同一组。

我需要一些帮助来创建这个查询。

谢谢:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-12 21:28:52

您可以连接到子查询,该子查询按组聚合并查找总数量:

代码语言:javascript
复制
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+或更高版本,我们也许能够简化分析函数的使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54159239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档