商品编号 进货 供应商 1 5 a 1 4 b表2 销售表 商品编号 销售 单位 1 3 x 1 2 y 表3 库存表 商品编号 库存 1 100 我想得到得表为
商品编号 库存 进货 销售 1 100 5+4 3+2方法一select AA.库存,bb.进货,cc。销售 from (select 商品编号,sum(库存) from 库存 group by 商品编号)aa, (select ,商品编号,sum(进货) from 进货表 group by 商品编号)bb, (select 商品编号,sum(销售) from 销售表 group by 商品编号)cc where aa.商品编号=bb.商品编号=cc。商品编号评价:利用该方法确实可以实现,但速度很慢.方法二select 商品编号,sum(库存),sum(进货),sum(销售) from (select 商品编号,sum(库存) as 库存,0 as 进货,0 as 销售 from 库存表 group by 商品编号 union all select 商品编号,0 as 库存,sum(进货) as 进货,0 as 销售 from 进货表 group by 商品编号 union all select 商品编号,0 as 库存,0 as 进货,sum(销售) as 销售 from 销售表 group by 商品编号 ) t1 group by 商品编号评价:利用该方法很巧,速度很快.我就是使用该方法解决问题方法三select A.商品编号, A.库存, (select sum(进货) from 进货表 where 商品编号 = A.商品编号) 进货, (select sum(销售) from 销售表 where 商品编号 = A.商品编号) 销售 from 库存表 A评价:利用该方法思路不错,速度也不错.但是在检索的过程中有中断的情况.方法四我曾用数据管道来解决该问题, 把库存表根据编码聚合和进货表合成利用数据管道形成新表 同时把销售表聚合利用数据管道形成新表最后两个表形成结果问题是解决了,但存在新的问题,如果对基本表没有更新或只有一次更新,结果正确 但如果对基本表第二次更新,此时,在运行数据管道,则会死机.
用DATA控件能对多表操作吗,怎么做
select 商品编号 as 商品编号, (select 库存 from b where a.商品编号=B。商品编号)as 库存, (select 进货 from c where a.商品编号=c.商品编号)as 进货, (select 销售 from d where a.商品编号=c.商品编号)as 销售 from a 这是我公司的一个老同事教我的嵌套查询,非常实用,现在转给csdn的兄弟姐妹们
Public Sub gSubInitDB() Set ADOCN = CreateObject("ADODB.Connection") ADOCN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\MS_ZLCX.mdb;Persist Security Info=False" ADOCN.CommandTimeout = 1200 AdoCString = ADOCN .ConnectionString ADOCN .Open DoEvents Exit Sub kkk: MsgBox "数据库连接出错,请检查数据库!", vbCritical, "sss" End End Sub
Public Sub gSubInitDB() Set ADOCN = CreateObject("ADODB.Connection") ADOCN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & 数据库文件;Persist Security Info=False" ADOCN.CommandTimeout = 1200 AdoCString = ADOCN .ConnectionString ADOCN .Open DoEvents Exit Sub kkk: MsgBox "数据库连接出错,请检查数据库!", vbCritical, "sss" End End Sub
[ 作者:佚名 转贴自:本站原创 点击数:62 文章录入:zjd950131 ]
问题:表1 进货表
商品编号 进货 供应商
1 5 a
1 4 b表2 销售表
商品编号 销售 单位 1 3 x
1 2 y
表3 库存表 商品编号 库存
1 100
我想得到得表为
商品编号 库存 进货 销售
1 100 5+4 3+2方法一select AA.库存,bb.进货,cc。销售
from (select 商品编号,sum(库存) from 库存 group by 商品编号)aa,
(select ,商品编号,sum(进货) from 进货表 group by 商品编号)bb,
(select 商品编号,sum(销售) from 销售表 group by 商品编号)cc
where aa.商品编号=bb.商品编号=cc。商品编号评价:利用该方法确实可以实现,但速度很慢.方法二select 商品编号,sum(库存),sum(进货),sum(销售)
from
(select 商品编号,sum(库存) as 库存,0 as 进货,0 as 销售
from 库存表
group by 商品编号
union all
select 商品编号,0 as 库存,sum(进货) as 进货,0 as 销售
from 进货表
group by 商品编号
union all
select 商品编号,0 as 库存,0 as 进货,sum(销售) as 销售
from 销售表
group by 商品编号
) t1
group by 商品编号评价:利用该方法很巧,速度很快.我就是使用该方法解决问题方法三select A.商品编号,
A.库存,
(select sum(进货) from 进货表 where 商品编号 = A.商品编号) 进货,
(select sum(销售) from 销售表 where 商品编号 = A.商品编号) 销售
from 库存表 A评价:利用该方法思路不错,速度也不错.但是在检索的过程中有中断的情况.方法四我曾用数据管道来解决该问题,
把库存表根据编码聚合和进货表合成利用数据管道形成新表
同时把销售表聚合利用数据管道形成新表最后两个表形成结果问题是解决了,但存在新的问题,如果对基本表没有更新或只有一次更新,结果正确
但如果对基本表第二次更新,此时,在运行数据管道,则会死机.
(select 库存 from b where a.商品编号=B。商品编号)as 库存,
(select 进货 from c where a.商品编号=c.商品编号)as 进货,
(select 销售 from d where a.商品编号=c.商品编号)as 销售
from a 这是我公司的一个老同事教我的嵌套查询,非常实用,现在转给csdn的兄弟姐妹们
Set ADOCN = CreateObject("ADODB.Connection")
ADOCN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\MS_ZLCX.mdb;Persist Security Info=False"
ADOCN.CommandTimeout = 1200
AdoCString = ADOCN .ConnectionString
ADOCN .Open
DoEvents
Exit Sub
kkk:
MsgBox "数据库连接出错,请检查数据库!", vbCritical, "sss"
End
End Sub
Set ADOCN = CreateObject("ADODB.Connection")
ADOCN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & 数据库文件;Persist Security Info=False"
ADOCN.CommandTimeout = 1200
AdoCString = ADOCN .ConnectionString
ADOCN .Open
DoEvents
Exit Sub
kkk:
MsgBox "数据库连接出错,请检查数据库!", vbCritical, "sss"
End
End Sub