当前位置: 首页 > 知识库问答 >
问题:

用parent_id求和并分组

陈允晨
2023-03-14

我有桌子:

类别

+----+-----------+---------------+
| id | parent_id | name          |
+----+-----------+---------------+
|  1 |      NULL | Dong ho nam   |
|  2 |         1 | dong ho nam 1 |
|  3 |         1 | dong ho nam 2 |
|  4 |         1 | dong ho nam 3 |
|  5 |         1 | dong ho nam 4 |
|  6 |      NULL | Dong ho nu    |
|  7 |         6 | Dong ho nu 1  |
|  8 |         6 | Dong ho nu 2  |
|  9 |         6 | Dong ho nu 3  |
+----+-----------+---------------+

和餐桌产品:

+----+-------------+---------------+
| id | category_id | quantity      |
+----+-------------+---------------+
|  1 |         6   | 10            |
|  2 |         3   | 2             |
|  3 |         3   | 4             |
|  4 |         2   | 12            |
|  5 |         4   | 6             |
|  6 |         2   | 0             |
|  7 |         6   | 8             |
|  8 |         8   | 22            |
|  9 |         9   | 4             |
+----+-------------+---------------+

我要选择category,sum(quantity)
//(产品的所有数量都属于category和category.parent_id=null)

结果:

+----+-----------+---------------+-----------+
| id | parent_id | name          | quantity  |
+----+-----------+---------------+-----------+
|  1 |      NULL | Dong ho nam   |     24    |
|  6 |      NULL | Dong ho nu    |     44    |
+----+-----------+---------------+-----------+

如何使用sql查询(或rails)可以达到上述效果。TKS.

共有1个答案

童浩言
2023-03-14

您需要同时聚合父级和子级。类似这样的事情应该很接近:

select c.id, p.quantity + coalesce(sum(p2.quantity),0) 
from categories c
    join (
        select category_id, sum(quantity) quantity
        from products 
        group by category_id) p on c.id = p.category_id 
    left join categories c2 on c.id = c2.parent_id
    left join products p2 on c2.id = p2.category_id
where c.parent_id is null
group by c.id
 类似资料:
  • 问题内容: 建立库存系统。我有很多产品,每个产品都有三个不同的变量。因此,对于总库存,我想按两列(产品和尺寸)和总数量分组以获得总库存。 我想要输出的内容: 小部件一-2:375 小部件二-3:150 小部件二-2:150 我想出了如何使用以下代码将一列分组并求和: 我只是按两列分组。可能吗?还是应该仅针对这三种尺寸的商品创建三种不同的产品并删除该列?谢谢。 问题答案: 根据示例表,您似乎希望分组

  • 我已经创建了一个bean类,其中包含所有字段(name、amount、description和number),以及相同的getter和setter。productBeans有所有产品的列表。 groupByProduct具有用名称分组的产品列表。结果给出了以产品地图为关键,以产品总量为价值的产品地图。 但在这里,我试图将产品和总金额映射到产品列表中。我试图结合上面的代码来获得预期的输出,但未能实现

  • 我有一个表abc,其中可以针对一个UserId有一个或多个行。abc表有列值。我希望结果是每个UserId值的总和。 示例:userid1- 我现在拥有的: 结果:它单独返回每行的总和。所以我有这样的: 用户标识1- 我应该更改或添加什么来完成查询? PS.我知道这是一个非常常见/简单的解决方案,但似乎找不到任何解决方案。:(

  • 我想保存数据到mySql表与这些代码 category.blade.php CategoryController.php 但是当我按下addEditCategory视图中的submit按钮时,尝试将属性“parent_id”指定为null,我如何解决这个问题?

  • 问题内容: 给出以下列表: 我想将它们按元组的第一,第二,第四和第五列进行分组,并对第三列求和。在此示例中,我将列命名为col1,col2,col3,col4,col5。 在SQL中,我将执行以下操作: 有没有一种“很酷”的方式来做到这一点,或者都是手动循环? 问题答案: (注意:重新格式化输出)

  • 我可以同时使用和吗?