设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

两个表用Where子句关联,然后更新为何出错?

1970-1-1 08:00| 发布者: ec| 查看: 2469| 评论: 0

原文地址:http://access911.net/index.asp?board=4&mode=3&recordid=77FAB61E14DC

问题:


1。两个表用Where子句关联,然后更新为何出错?
update a set a.fb=b.fb where a.fa=b.fa

2。共有billlist和B_see两个表。要把B_see中的值写到billlist中
我把前缀去掉了,也还报错.SQL语句如下
update BillList set billList.ProdNewprice=B_see.a ,billList.ProdnewMoney=B_see.b,billList.ProdDiscount=B_see.c
from BillList,B_see 
where billList.Id=B_see.Id

回答:


这个问题经常发生在从其他中大型数据库开发者转到用 jet db 4 的Access的时候
Access中不允许用where tableA.fieldA = TableB.fieldA 来做update的连接,这是T-sql的语法,在当初教T-sql的时候你们老师应该说过这句语句使用的注意要点吧?
必须把t-sql的语法转成Asni的语法,用 join 来做。

UPDATE a INNER JOIN b ON a.fa = b.fa SET a.fb = b.fb;

问题:

想达到此目的,如何修改下面的update语句
update usertabb094 t1 ,(select field_3, sum(field_9) as field_91,sum(field_10 ) as field_101 from usertabb095 group by field_3 ) t2 set t1.field_8=(t1.field_8*t1.field_7+t2.field_101)/(t1.field_7+t2.field_91) where t1.field_1=t2.field_3 


上面的语句运行显示:
操作必需使用一个可更新的查询

 

回答:

必须拆成2个查询才能运行
1、
select field_3, sum(field_9) as field_91,sum(field_10 ) as field_101 into [095] from usertabb095 group by field_3


注意:使用套嵌查询就会出现你说的问题,但是使用临时表没问题
2、
UPDATE usertabb094 AS t1 INNER JOIN 095 ON t1.field_1=[095].field_3 SET t1.field_8 = (t1.field_8*t1.field_7+[095].field_101)/(t1.field_7+[095].field_91);

录入:changechange(CSDN)   责任编辑:cg1

 

最新评论

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-30 09:01 , Processed in 0.095892 second(s), 16 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部