memset函数重构:求前辈专家帮忙,懂数据库语言的进

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 14:13:02
在VFP中,怎么比较两个表中有相同记录,或者表1中的记录而表2没有记录有哪些,比较出来的结果能重新重为一个新表

如有表1,表2 两个dbf库(两个表结构相同)

1.怎么查出表1和表2相同字段的记录,然后另存为一个新表
2.假设表1包含有表2的所有字段的记录,怎么查出表2中相同字段的记录在表1相同字段找不到的,另保存为一个新表

请专家写出详细步骤和命令好吗?或者能帮我编个prg的程序来直接完成这些
我的意思是记录相同是所有的字段内容相同

还有用什么命令可以查出一个表有相同记录,也就是列出同字段类相同记录

问题说得不是很清楚,记录相同是所有的字段内容相同还是关键字段相同?
你的第二个问题:“假设表1包含有表2的所有字段的记录”,也就是说表1比表2大,表2有的数据表1肯定有,表1有的数据表2不一定有,是吗?怎么又会“表2中相同字段的记录在表1相同字段找不到的”

下面只是以关键字段为标准,而且是基于“表1比表2大,表2有的数据表1肯定有,表1有的数据表2不一定有”

假设表1为AAA,表2为BBB,新建表3为CCC,新建表4为DDDD(表3、表4与表1、2结构相同,为空表)

对AAA、BBB以某一个唯一字段为关键字进行索引。假设为NO字段。其他字段名为F1、F2、F3、F4......

SELE 1
USE AAA INDE AAA
SELE 2
USE BBB INDE BBB
SELE 3
USE CCC
SELE 4
USE DDD

SELE 1
GO TOP
DO WHIL .NOT.EOF()
SELE 2
FIND AAA.NO
IF FOUND()
SELE CCC
APPE BLAN
REPL NO WITH AAA.NO,F1 WITH AAA.F1,F2 WITH AAA.F2,F3 WITH AAA.F3,....
ELSE
SELE DDD
APPE BLAN
REPL NO WITH AAA.NO,F1 WITH AAA.F1,F2 WITH AAA.F2,F3 WITH AA.F3,....

ENDI
SELE 1
SKIP

ENDD

执行结果:
表2有的数据在CCC表(那CCC表应该跟表2是一样的),表1有表2没有的数据在DDD表。

补充如下:
如果你的意思是"所有的字段内容相同 ",那就要对所有的字段进行比较.将条件语句修改一下就可以了.

VFP里的查找一般都是通过字段(一个或多个字段都可以)查找,查找命令有FIND、SEEK、LOCA(LOCA一般叫定位命令,与CONT连用)

sele 2
use a.dbf
set order to key
sele 1
use b.dbf
set rela to bmxh into 2
copy to other.dbf for key=b->key