请教SQL多数据表问题
这里有4个数据表,如:
表0
编号 名称 型号 库存量
00001 A11 188 60
00002 A01 001 10
表1
编号 名称 入库量 入库日期
00001 A11 52
00002 A01 10
表2
编号 名称 退货量 退货日期
00001 A11 6
00002 A01 10
00001 A11 20
表3
编号 名称 销售量 销售日期
00001 A11 5
00002 A01 12
00001 A11 3
00001 A11 10
想用一个SQL语句读取4个表信息,显示为:
编号 名称 型号 库存量 入库量 退货量 销售量
00001 A11 188 60 52 26 18
00002 A01 001 10 10 10 12
读取表0的信息(编号,名称,型号,库存量),以表0的编号调用表1的入库量(相同编号的信息累计如:sum(入库量)),以表0的编号调用表2的退货量(相同编号的信息累计如:sum(退货量)),以表0的编号调用表3的销售量(相同编号的信息累计如:sum(销售量))
例:
select 编号 from (select 编号,名称,型号,库存量 from 表0 union all select sum(入库量) as 入库 from 表1 union all select sum(退货量) as 退货 from 表2 WHERE 类型='退货' union all select sum(销售量) as 销售 from 表3) T group by 编号
该如何实现?请教大家!
[解决办法]
1.如果你用的是SQL数据库你可以使用存储过程,字符串拼接将需要的数据拼接出来
2.你可以把表0作为主表读出商品信息,然后在页面上循环的时候根据表0的ID来读取你想要的数据。
[解决办法]
select 编号,名称,型号,库存量,
(select sum(入库量) as 入库量 from 表1 where 编号=表0.编号),
(select sum(退货量) as 退货量 from 表2 where 编号=表0.编号),
(select sum(销售量) as 销售量 from 表3 where 编号=表0.编号)
from 表0
[解决办法]
select a.编号,a.名称,a.型号,a.库存量,sum(b.入库量) as 入库量,sum(c.退货量) as 退货量,sum(d.销售量) as 销售量
from 表0 a inner join 表1 b on a.编号=b.编号
inner join 表2 c on a.编号=c.编号
inner join 表3 d on a.编号=d.编号
group by a.编号,a.名称,a.型号,a.库存量