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 quantity0)。sub_product如果保证每个都至少有 1 个,product那么您可以使用 anINNER JOIN代替。