主题:各位老师过节好,请教个问题
yin710
[专家分:0] 发布于 2012-10-01 09:11:00
各位老师过节好,我是个初学者,有很多不懂。我想请教个问题:如何能比对两个DBF中数据一致的并把它罗列出来?两个表的数据各有数百条。比对的条件:姓名 金额 时间这三个都一样才行。谢谢
如:
DBFa 序号 姓名 金额 时间
1 张三 6500 2012.1.1
2 李四 5500 2012.1.15
3 王五 5530 2012.1.14
4 孙六 4500 2012.1.7
5 韩七 1400 2012.1.5
: : : : : : : :
DBFb 序号 姓名 金额 时间
1 韩七 8400 2012.1.5
2 刘八 4700 2012.1.14
3 张三 6500 2012.1.1
4 孙六 4500 2012.1.7
5 钱九 7100 2012.1.4
: : : : :
新表 DBFc 序号 姓名 金额 时间
1 张三 6500 2012.1.1
2 孙六 4500 2012.1.7
: : : :
最后更新于:2012-10-01 10:26:00
回复列表 (共9个回复)
沙发
cagd [专家分:410] 发布于 2012-10-02 00:32:00
close all
select a.* ;
from a.dbf a,b.dbf b ;
where allt(a.姓名)+allt(a.金额)+allt(a.时间)==allt(b.姓名)+allt(b.金额)+allt(b.时间) into table d.dbf
close all
sele recn() 序号,* from d.dbf into table c.dbf
close all
erase d.dbf
板凳
yin710 [专家分:0] 发布于 2012-10-04 14:00:00
cagd老师好,我用你给的代码操作,1.用命令窗口做,提示文件不存在。
2.用表单命令按钮做,提示函数值等无效,点忽略后,出来C.dbf,但不是重复的内容一致的罗列出来。请给予指教。谢谢
3 楼
alpen [专家分:1140] 发布于 2012-10-04 15:08:00
需修改这个条件:where allt(a.姓名)+allt(a.金额)+allt(a.时间)==allt(b.姓名)+allt(b.金额)+allt(b.时间)
估计问题在这里,字段类型不一致,所以提示函数值等无效,
因为这个命令的前提是认为三个多是字符型的字段,姓名,金额,.时间,你将结构改一下,就好了。或者把这三个字段的类型贴出来,再修改这个条件:where allt(a.姓名)+allt(a.金额)+allt(a.时间)==allt(b.姓名)+allt(b.金额)+allt(b.时间)
4 楼
yin710 [专家分:0] 发布于 2012-10-04 18:37:00
谢谢2位老师的指教。有情况再请教。
5 楼
sdta [专家分:570] 发布于 2012-10-06 01:34:00
[url=http://]SELECT RECNO(),C.* FROM (SELECT A.姓名,A.金额,A.时间 FROM TABA A,TABB B WHERE A.姓名==B.姓名 AND A.金额==B.金额 AND A.时间==B.时间) C[/url]
6 楼
yin710 [专家分:0] 发布于 2012-10-12 15:08:00
老师们好,几天因为忙,没有回复老师们,现在这个对比出现点问题,内容是空的。仅有字段名。这么回事呢?谢谢老师
7 楼
qjbzjp [专家分:8830] 发布于 2012-10-12 19:35:00
SELECT dbfa.* FROM dbfa,dbfb WHERE dbfA.姓名=dbfB.姓名 AND dbfA.金额=dbfB.金额 AND dbfA.时间=dbfB.时间 into table dbfc
8 楼
yin710 [专家分:0] 发布于 2012-10-13 17:40:00
qjbzjp老师好,用你的代码也没有内容,仅有字段名。cagd老师教给的代码有一次练习时,出来了对比数据,符合我的想法。为什么以后就没内容呢?希望老师们给予指教。两个表大部分数据是相同的,只不过序号不同,排序不同。我想通过对比把相同数据都罗列出来,我用这个代码有什么错误?字段名都设为字符型。
select a.序号,a.姓名,a.金额,a.时间,b.姓名,b.金额,b.金额,b.序号 from a.dbf,b.dbf where a.姓名=b.姓名and a.金额=b.金额 and a.时间=b.时间
用这个代码两个表里各有数百条数据对比出来仅有10余个,应该不是相同数据的很少才对,大部分都相同。谢谢老师
9 楼
qjbzjp [专家分:8830] 发布于 2012-10-13 23:01:00
消除空格的影响试试:
SELECT dbfa.* FROM dbfa,dbfb WHERE ALLTRIM(dbfA.姓名)=ALLTRIM(dbfB.姓名) AND ALLTRIM(dbfA.金额)=ALLTRIM(dbfB.金额) AND ALLTRIM(dbfA.时间)=ALLTRIM(dbfB.时间) into table dbfc
我来回复