如何将表的某些数据统计后写入另一个表(50分)

  • 主题发起人 主题发起人 binjinsx
  • 开始时间 开始时间
B

binjinsx

Unregistered / Unconfirmed
GUEST, unregistred user!
在实际工作中,我想从几个表中查询相应的字段数据,
查询后对一些字段进行统计并将统计结果写入另一个
表中相应的数据字段中。请问该如何处理。最好给一
个例子。
谢谢
 
1.生成查询视图
create view view_name as select * from a,b where 条件
2.将视图中字段统计后insert table
insert into table_name(sf1) from select sum(f1) from view_name

sql 语句不完整,仅供参考
 
如果你的数据库不支持视图,直接在源表上统计也可以
 
在查询结果字段数固定的情况下,将查询视图结果写入一数据库。我曾用TBatchMove
作为中间构件实现这一做法。例如:
构件:
Query1、BatchMove1、Table1。

属性:
object BatchMove1: TBatchMove
Destination = Table1
Source = Query1
end
object Query1: TQuery
SQL.Strings = (
'...')
end

Query1.SQL := ...
BatchMove1.Source := Query1;
BatchMove1.Destination := Table1;
BatchMove1.Mode := batCopy;

方法:
Query1.Open;
BatchMove1.Execute;

旗帜:
TBatchMove.Mode 有五个旗帜分别为:
Mode = [batAppend, batAppendUpdate, batCopy, batDelete, batUpdate];
设置该旗帜可改变结果库写入方式。
<仅供参考>
 
...
FndStr = True;
With Table Do
Begin
Open;
First;
While Not eof and FndStr Do
Begin
if FieldValues['字段名']=标识内容 Then
Begin
idxNo := RecNo; FndStr := False;
End;
next;
end;

First;
Edit;
moveby(idxNo-1);
FieldValues['字段名']=统计结果;
post;
Close;
End;
...
就这么简单!
 
paradox 7 数据库是否支持视图?
 
binjinsx,paradox等文件型数据库都不支持视图的
 
insert into yourtable (field...) select fields... from yourtable2
inner join ... where ... group by...
这不就行了
 
LOCAL SQL很麻烦,太多不支持:-(
用 TTABLE 吧,反正效率不比LOCAL SQL低。
 
With TQuery.Create(nil) do
begin
SQL.Add('Create Table ZZZ As');
SQL.Add(' Select a.Field1, a.Field3, b.Field3, b.Field3 From TableA a, TableB b');
SQL.Add(' Where a.FiledX = b.FieldY');
ExecSQL;
Free;
end;
 
多人接受答案了。
 
后退
顶部