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 来表示。.
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,