我的TK表里面有20000 条记录,我的类型f_leixin表里是查询的种类共有40 记录
我想从TK表里查询统计符合类型表里种类的记录数, 比将统计的数存入类型表里,下面的代码能够实现,,可是速度非常慢。
请高手帮我成化以下???
请教有没有更好的解决办法???
在线begin
adotable2.First;
while not adotable2.eof do begin
lx1:=adotable2.fieldbyname('leixin').AsString;
adotable2.edit;
adotable2.Post;
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.sql.add('select count(t11) as lnfen2 from tk where t11 like ''%'+lx1+'%''');
adoquery2.Open;
lnfen2:=adoquery2.fieldbyname('lnfen2').asinteger;
adotable2.Edit;
adotable2.fieldbyname('yti').asinteger:=lnfen2;
adotable2.Next;
end;
end;
我想从TK表里查询统计符合类型表里种类的记录数, 比将统计的数存入类型表里,下面的代码能够实现,,可是速度非常慢。
请高手帮我成化以下???
请教有没有更好的解决办法???
在线begin
adotable2.First;
while not adotable2.eof do begin
lx1:=adotable2.fieldbyname('leixin').AsString;
adotable2.edit;
adotable2.Post;
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.sql.add('select count(t11) as lnfen2 from tk where t11 like ''%'+lx1+'%''');
adoquery2.Open;
lnfen2:=adoquery2.fieldbyname('lnfen2').asinteger;
adotable2.Edit;
adotable2.fieldbyname('yti').asinteger:=lnfen2;
adotable2.Next;
end;
end;
你的表结构是什么?
update f_leixin Set yti= (select count(t11) as YTI from tk where t11 like '%'+leixin+'%')
在SQl server上调试通过
如果你的f_leixin 表不做统计,而由另外的表来统计,用insert就可以绕过不能同时更新多条记录这个限制了
其中有一个“LEIXIN”字段是存放所有类型的,共有18个记录的类型不重复;
我的TK表里有10个字段。
T11是类型字段,不过是重复类型的20000条记录;
我要在达到的目的就是通过查询统计出符合18个类型的记录有多少条然后求和后分别存入L——EIXIN表中的记录。
速度也比较快。可以用一条语句把所有的统计信息统计出来吧?那就可以insert 了。
举个列子吧:f_leixin表中有leixin字段。然后我建立了一个统计表。tongji,有字段类型和YTI
Tk表是个流水表吧,有一个字段tll。
我要统计的时候就依次执行下面的SQl语句
1、delete from tongji
2、insert into tongji(leixin,YTI)values(select tll as leixin,count(tll)as Yti from Tk group by Tll)
最后,统计表里面就有了你想要得东西,ACCESS支持的SQl 比较少。也只能这样了,如果发现速度慢,最好是优化数据库接口,很有帮助的
set r.yti=t.Yti
where r.tll=t.tll//---记着加分
里面有字段:t11(名称),t12(内容),t13(题目类型,是重复的记录),
有一个表:f_lexxin 有18 条记录,每条记录一个类型。
里面有字段:leixin ,NU(存入统计的结果),要实现的是这样的
如果按照F—LEIXIN表里的类型,,把TK表里的类型统计出来。 然后存入F—LEIXIN表里。
F—LEIXIN表里的记录不能重写,,只能更新字段NU
帮帮我吧。
set r.nu=t.Yti
where r.leixin=t.leixin//---记着加分
能不能写的具体一点,请高手帮我一下。
如果统计的条件有两个怎么写呀。
谢了
QQ:文件名:TKSJ01.PAS
begin
close ;
sql.text:='update f_lexxin r,(select tl3 as leixin,count(tl3)as Yti from Tk group by Tl3) as t set r.nu=t.Yti where r.leixin=t.leixin'
execsql ; end;