Abd*_* dz 3 join sql-server query group-by sum
我有2张桌子
ID | 指定 |
---|---|
1 | 古柯 |
2 | 百事可乐 |
3 | 芬达 |
4 | 七 |
5 | 八 |
2)子产品
产品编号 | 姓名 | 数量 |
---|---|---|
1 | SM | 10 |
1 | lg | 10 |
1 | XL | 20 |
2 | 1升 | 10 |
2 | 2升 | 20 |
2 | 5升 | 20 |
3 | 泰 | 10 |
3 | 萨 | 20 |
4 | 哈 | 20 |
4 | 克德 | 30 |
我想要的是这样的:产品表中的指定和总数量,代表具有相同product_id的数量的总和
指定 | 总数(量 |
---|---|
古柯 | 40 |
百事可乐 | 50 |
芬达 | 30 |
七 | 50 |
注:我使用 SQL 服务器
JOIN
这可以简单地使用and子句来完成,GROUP_BY
如下所示:
SELECT
p.designation,
SUM(ISNULL(sp.quantity, 0)) AS [total quantity]
FROM product AS p
LEFT JOIN sub_product AS sp
ON p.id = sp.product_id
GROUP BY p.id, p.designation
Run Code Online (Sandbox Code Playgroud)
请注意使用 a LEFT OUTER JOIN
(又名 a LEFT JOIN
)来确保即使products
没有任何sub_products
仍然返回(a 为total quantity
0)。sub_product
如果保证每个都至少有 1 个,product
那么您可以使用 anINNER JOIN
代替。