SQL语句 与统计相关

来源:百度知道 编辑:UC知道 时间:2024/05/09 11:23:11
表A (商品表)

ID 名称 颜色
1 Name1 Color
2 Name2 None
.......

表B (原料表)

ID 开料 数量
1 纸 40
2 墨 30
......

表C (库存表)
ID 数量
1 30
.....

我用以下SQL语句

SELECT A.ID, A.名称, Sum(B.数量) AS 开料数量, Sum(C.数量) AS 库存数量
FROM C INNER JOIN (B INNER JOIN A ON B.ID = A.ID) ON C.ID = A.ID
GROUP BY A.ID, A.名称;

只能得到

ID 名称 开料数量 库存数量
1 Name1 40 30

但是我想得到的结果

ID 名称 开料数量 库存数量
1 Name1 40 30
2 Name2 30 0

也就是说:
我每对应的 库表料 或是 原料表 不一定有 对应商品表 ID 的 数量。

但是我想,如果没有,就用就用 0 来表示。.

查询的时候用left join即可,另外使用isnull来将NULL值置为0

select a.id,a.名称,isnull(sum(b.数量),0) as 开料数量,isnull(sum(c.数量),0) as 库存数量
from a left join b
on a.id=b.id left join c
on a.id=c.id
group by a.id,a.名称

你可以在设计表的时候,给它一个默认的值,、
在默认值拦中输入0为默认值就可以了。
那样的话,当用户没输入数据的时候,就会
默认的给它0,