日期:2014-05-16  浏览次数:20891 次

请教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.库存量

如果是ACCESS,则要把连接的几个表依次用括号括起来.