我有桌子:
类别
+----+-----------+---------------+
| 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.
您需要同时聚合父级和子级。类似这样的事情应该很接近:
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中,我将执行以下操作: 有没有一种“很酷”的方式来做到这一点,或者都是手动循环? 问题答案: (注意:重新格式化输出)
我可以同时使用和吗?