★SQL:UPDATE问题,在线等待.......来者有分,顶者有分................
我在同一个表中有层次结构,表结构如下:
假设此表有三条记录,我如何用UPDATE 语句更新第一条记录的SL字段为它的子女的数量之和23。ID FID SL(数量) BS(标示子段:0表示双亲、1子女)
1 0 0
2 1 10 1
3 1 13 1
我在同一个表中有层次结构,表结构如下:
假设此表有三条记录,我如何用UPDATE 语句更新第一条记录的SL字段为它的子女的数量之和23。ID FID SL(数量) BS(标示子段:0表示双亲、1子女)
1 0 0
2 1 10 1
3 1 13 1
(select fid,sum(sl) as sumsl from tbl where bs=0 group by fid) b
where a.fid=b.fid
(select fid,sum(sl) as sumsl from tbl where bs=1 group by fid) b
where a.fid=b.fid
假设此表有三条记录,我如何用UPDATE 语句更新第一条记录的SL字段为它的子女的数量之和23。ID FID SL(数量) BS(标示子段:0表示根节点、1子女)
1 0 0
2 1 10 1
3 1 13 1
4 0 __ 0
5 4 20 1
6 4 30 1
7 0 ___ 0
8 7 5 1
9 7 4 1
10 7 9 1
................
表中的记录是比较复杂的树型结构,现在把第2、3条记录的数量和23赋值给第1条记录的数量,现在把第5、6条记录的数量和50赋值给第4条记录的数量,现在把第8、9、10条记录的数量和18赋值给第7条记录的数量.........(他们之间都有父子关系)
上面是T-SQL语法
Access中不允许用where tableA.fieldA = TableB.fieldA 来做update的连接,这是T-sql的语法,必须把t-sql的语法转成Asni的语法,用 join 来做。对查询结果关联,access必须把查询分成两部分,最后把临时表删:
-------------------------------------------------------------------------
select fid,sum(sl) as sumsl from aa into bb where bs=1 group by fid;update aa inner join bb
on aa.id=bb.fid
set aa.sl=bb.sumsldrop table bb
--------------------------------------------------------------------------
------------>
select fid,sum(sl) as sumsl into bb from aa where bs=1 group by fid;
我的语法有什么错误?
谢了,我用的是access数据库,在试一下。
楼主如果是access数据库就不行了;
上面是T-SQL语法
Access中不允许用where tableA.fieldA = TableB.fieldA 来做update的连接,这是T-sql的语法,必须把t-sql的语法转成Asni的语法,用 join 来做。对查询结果关联,access必须把查询分成两部分,最后把临时表删:
-------------------------------------------------------------------------
select fid,sum(sl) as sumsl from aa into bb where bs=1 group by fid;update aa inner join bb
on aa.id=bb.fid
set aa.sl=bb.sumsldrop table bb
--------------------------------------------------------------------------