有两个表 a(主表) 、 b(子表) ,a 中的ID 对应 B中的ID1 ,我要把B中的三个字段相乘并累加起来 sum(len*kd*xs) 得到的值赋给 a中的一个字段 jsxmj ,(条件是a.id=b.id1),请问这样的sql语句如何写

解决方案 »

  1.   

    update  a  set jsxmj= (select sum([len]*kd*xs) from b where a.id =b.id1) 
      

  2.   

    我也是这么写的在sqlserver中是可以的,但是在Access中就提示"操作必须使用一个可更新的查询"!
    在access中应该怎么改写这条语句?
    update dltb_连接输出 set jsxmj1= (SELECT sum(长度*dwkd*kcxs) AS js FROM dljx_arc WHERE dljx_arc.lpoly_=dltb_连接输出.dljx_ )
      

  3.   

    update a
    set jsxmj =(select sum([len]*kd*xs) from b group by id1)
    from a inner join b
    on a.id=b.id1
      

  4.   

    楼上的update语句可以在SQL Server中使用,但是在Access中不行。Access可以用域函数或借助中间表处理。
      

  5.   

    你的表 dltb_连接输出 怎么定义的?
      

  6.   

    Access中不支持update语句
    ----------------------------------NO!
    Access支持Update语句,只不过功能没有SQL Server的update功能强大而已。Access使用的是Jet-SQL,而SQL Server使用的是T-SQL,两者用法上相差很大。Access的Update语句中,对于含有聚合函数子查询的支持远比不上SQL Server,所以要使用域函数或借助临时表。JET SQL 帮助(jet4 access2000)下载地址http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt=