+ -
当前位置:首页 → 问答吧 → Access操作中,update A left join B,B可不可以是子查询?

Access操作中,update A left join B,B可不可以是子查询?

时间:2011-05-26

来源:互联网

Access表名BASE
BASE里有三列资料,Material,Quantity,Remark

database.execute "update BASE t1 left join (select Material,sum(Quantity) as Quantity from BASE group by Material) t2 on t1.Material=t2.Material set t1.Remark=t2.Quantity"

(select Material,sum(Quantity) as Quantity from BASE group by Material)换成另外一个表的话,我试过是可以的,但为什么换成子查询就不行?是不是不可以这样做?

如果不可以?该怎样才能达到先求和再填到Remark列的效果,请帮忙!

作者: withnoproof   发布时间: 2011-05-26

将子查询中合计字段名改一个,ACCESS不能用同名的:
(select Material,sum(Quantity) as QtySum from BASE group by Material)

作者: marco   发布时间: 2011-05-26

应该不是名字的问题,之前有试过 不同名字的

还是贴上附件,希望能帮忙研究一下,谢谢
目前能想到折中的办法就是再建一个表,把查询资料调进去,然后再调出需要的信息到原来的表,不过实在不想这样,太麻烦

代码:
sub xxy()
AccDBFullName = Application.Path & "\xlsDB.mdb"
Set AccDB = DBEngine.Workspaces(0).OpenDatabase(AccDBFullName, False, False)
AccDB.Execute "update [BASE] t1 left join (select Material,sum([Usage probability in %]) as Percentage from [BASE]) t2 on t1.Material=t2.Material  set t1.[Other]= t2.Percentage "
end sub

附件

xlsDB.rar(156.69 KB)

2011-5-26 22:51, 下载次数: 0

作者: withnoproof   发布时间: 2011-05-26