注册 登录
编程论坛 SQL Server论坛

如何实现物料清单的循环查找合并?

woboy 发布于 2010-08-22 23:55, 768 次点击
父件           子件          定额      工艺链
11HQ653        211HQ653-01    1       11HQ653/211HQ653-01
211HQ653-01    211HA653-01    1       11HQ653/211HQ653-01/211HA653-01
211HA653-01    211A653-01     1       11HQ653/211HQ653-01/211HA653-01/211A653-01
211A653-01     211G653-01     1       11HQ653/211HQ653-01/211HA653-01/211A653-01/211G653-01
211G653-01     211Y653-01     1       11HQ653/211HQ653-01/211HA653-01/211A653-01/211G653-01/211Y653-01
211Y653-01     401990       0.012     11HQ653/211HQ653-01/211HA653-01/211A653-01/211G653-01/211Y653-01/401990
11HQ653        399Y81196       1      11HQ653/399Y81196
11HQ653        5016547       0.01     11HQ653/5016547
11HQ653        503M6547        1      11HQ653/503M6547
11HQ653        5046547        0.02    11HQ653/5046547
11HQ653        5070060         1      11HQ653/5070060

通过查询父件和子件合并出“工艺链”列的内容,通过SQL该如何做才可以实现?
请各位大师指点指点!谢谢!

8 回复
#2
aei1352010-08-23 17:22

declare @CList table(parentid varchar(50),sonid varchar(50),[desc] varchar(500))
declare @tmpCList table(parentid varchar(50),sonid varchar(50))
declare @parentid varchar(50),@sonid varchar(20),@tmpfacther varchar(50),@tmpsonid varchar(50)
insert into @clist(parentid,sonid) select parentid,sonid from ceshi
while exists(select 0  from @CList where [desc] is null)
begin
    select top 1 @parentid=parentid,@sonid=sonid from @CList where [desc] is null
    update @CList set [desc]=@parentid+'/'+sonid where parentid=@parentid and sonid=@sonid
    set @tmpfacther=@parentid
    insert into @tmpCList select parentid,sonid from ceshi
    while exists(select 0 from @tmpCList where sonid=@tmpfacther)
    Begin
        select top 1 @tmpsonid=sonid,@tmpfacther=parentid from @tmpCList where sonid=@tmpfacther
        update @CList set [desc]=@tmpfacther+'/'+[desc] where parentid=@parentid and sonid=@sonid
    End
end
select * from @CList
#3
woboy2010-08-23 17:36
尊敬的版主:
     谢谢你的帮助!但我实在看不明白,请教一下该怎么用?是存储过程还是?我刚接触SQL.
      谢谢!
#4
aei1352010-08-24 09:17
把表名ceshi替换成你的表名,parentid替换成父件,sonid替换成子件,[desc]替换成工艺链,直接放到查询分析器中运行,结果就出来了,也可以放到存储过程里直接调用
#5
tanyongqiang2010-08-25 12:50
#6
woboy2010-08-25 18:20
谢谢版主,正在测试当中,我目前的数据有10554条,而且以后会不断的增加,本次测试总共用了33分钟都还没查出结果,回家继续测试。请问还有办法加快查询速度吗?谢谢!
#7
woboy2010-08-26 00:04
版主,晚上在家测试了一个多小时没结果出来!是因为数据太多的缘故!还有其他的办法吗?
#8
qingshuiliu2010-08-28 07:27
aei135,好样的
#9
Assassion2010-09-02 14:12
没懂
1