注册 登录
编程论坛 VFP论坛

请教:如何替换 sele... not in 语句

ntxscwk 发布于 2022-02-12 18:41, 1508 次点击
有两张表 联系情况.dbf 及 亲属.dbf ,想从联系情况表中找出 非亲属联系的全部记录。用下面的命令可以实现:
SELECT a.姓名,a.联系人,a.联系电话 FROM 联系情况 as a, 亲属 as b WHERE a.联系人  NOT in  (SELECT 亲属 FROM 亲属,联系情况 WHERE  联系情况.姓名==亲属.姓名)

但因为数据量比较大,运行查询到50%左右就出现临时文件太大的提示。
用set relation to 总做不对,求助各位大神!谢谢!

只有本站会员才能查看附件,请 登录
4 回复
#2
吹水佬2022-02-12 19:42
只有本站会员才能查看附件,请 登录

程序代码:
USE 联系情况 IN 0 ALIAS a
USE 亲属 IN 0 ALIAS b
SELECT b
INDEX on 姓名+亲属 TAG tag_b
SELECT a
SET RELATION TO 姓名+联系人 INTO "b"
BROWSE FOR !FOUND("b")
#3
ntxscwk2022-02-12 20:53
回复 2楼 吹水佬

正确!解决了!非常感谢!

就是原理没太弄明白,我再消化消化。
#4
ntxscwk2022-02-12 21:06
回复 2楼 吹水佬
将a->(姓名+联系人) 和b->(姓名+亲属) 均看成整体,两者比较,未发现的即为结果。
这样理解对吗?
#5
吹水佬2022-02-13 08:51
以下是引用ntxscwk在2022-2-12 21:06:42的发言:

将a->(姓名+联系人) 和b->(姓名+亲属) 均看成整体,两者比较,未发现的即为结果。
这样理解对吗?

不清楚,也是猜的。
从数据结构和筛选条件看: “联系人”和“亲属”属性相似
1