关联运算(50分)

  • 主题发起人 主题发起人 aahben
  • 开始时间 开始时间
A

aahben

Unregistered / Unconfirmed
GUEST, unregistred user!
我有两个表a,b
a如下:
id,slary1
b如下
id ,slary2
两表id关联,我现在要求当a有b的数据跟它相关联时将slary1加到sum1中去,同时把b的
slary2加到sum2中去,就是说a中的数据并不是都有b的数据跟它关联,此时不加,
b的记录条数并不一定比a的少,这两个表的主细关系可以相互。
我用了一个计算
while not adotable1.eof do
begin
while not adotable2.eof do
begin
if adotable1.id=adotable2.id then
begin
sum1:=sum1+slary1;
sum2:=sum2+slary2;
end;
adotable2.next;
end;
adotable1.next;
end;
这样在计算何就是计算a*b的数量级,怎么样提高运算速度,希望用代码帮我呀
 
直接用SQL解决
如果需要分组汇总:
SELECT A.ID,SUM(slary1),SUM(slary2)
FROM A JOIN B ON A.ID = B.ID
GROUP BY A.ID
否则:
SELECT SUM(slary1),SUM(slary2)
FROM A JOIN B ON A.ID = B.ID

另外,用你的代码还需在第二个while前加一句:
adotable2.First;
否则,结果会出错.

 
to aahben:寫代碼規劃些吧,我看得頭暈...(不想按空格鍵就用用delfor吧)
 
谢谢Awen.ZW.Yang的答案,只是关联表中如果加上一个条件限制的时候就特别的慢
 
应该不慢啊!
 
相对你原来的代码应该快得很多!
SELECT SUM(slary1) as Sum1,SUM(slary2) as Sum2
FROM A JOIN B ON A.ID = B.ID
试一试了!
 
散分了。
 

Similar threads

S
回复
0
查看
685
SUNSTONE的Delphi笔记
S
S
回复
0
查看
645
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部