主题:一字段包含另一表字段
cagd
[专家分:410] 发布于 2008-09-10 12:45:00
有表a1.dbf二万多记录,包含2个字段c(字符型)和g(字符型);
另一个表cb.dbf二万多记录,
亦包含2个字段yhh(字符型)和zcbh(字符型)。
现简单列出二个表的其中三条记录如下:
cb.dbf a1.dbf
yhh zcbh c g
100001 aef0175689Y 102689 756
100018 123456789 101563 951
103547 9873682 104278 87368
现想将凡是表cb.dbf中字段zcbh包含表a1.dbf中字段g的
记录生成1个新表b1.dbf如下:
yhh zcbh c g
100001 aef0175689Y 102689 756
103547 9873682 104278 87368
请问代码如何写,谢谢!
最后更新于:2008-09-10 22:02:00
回复列表 (共14个回复)
沙发
cbl518 [专家分:57140] 发布于 2008-09-10 15:35:00
SELECT a1.*,cd.* FROM a1,cd WHERE TRIM(cd.zcbh $ a1.g
SELECT a1.*,cd.* FROM a1,cd WHERE AT(TRIM(cd.zcbh),a1.g)>0
板凳
cbl518 [专家分:57140] 发布于 2008-09-10 15:35:00
SELECT a1.*,cd.* FROM a1 INNER JOIN cd ON AT(TRIM(cd.zcbh),a1.g)>0
3 楼
cbl518 [专家分:57140] 发布于 2008-09-10 15:40:00
这是一种特殊的连接,你试试看,那种速度快、准确!
我在少纪录的情况下。测试结果是正确的!
请将测试结果和正确性告知为盼~~!
4 楼
cbl518 [专家分:57140] 发布于 2008-09-10 15:50:00
在命令窗口输入:
d1= SECONDS( )
SELECT a1.*,cd.* FROM a1,cd WHERE AT(TRIM(cd.zcbh),a1.g)>0 into dbf 结果表
? "用时",(SECONDS( )-d1),"秒"
BROWSE
5 楼
cagd [专家分:410] 发布于 2008-09-10 22:07:00
SELECT a1.*,cd.* FROM a1,cd WHERE TRIM(cd.zcbh) $ a1.g
上面这条代码我在VF6运行显示错误,我没有VF9,所以不知在VF9能否运行。
下面两条代码运行我举例的三条记录是正确的,但是在我实际记录里(几千条记录)运行的时候
没有得到正确的记录,现我将a1.dbf表cb.dbf表上传,
下载地址:http://www.meizvfp.com/bbs/viewFile.asp?flag=1&BoardID=2&ID=34352
或者http://bbs.pfan.cn/downfile.asp?fileid=2566
现简单列出其中生成的正确结果应包括两条记录g字段等于219191和等于10282
SELECT a1.*,cd.* FROM a1,cd WHERE AT(TRIM(cd.zcbh),a1.g)>0
SELECT a1.*,cd.* FROM a1 INNER JOIN cd ON AT(TRIM(cd.zcbh),a1.g)>0
6 楼
时光倒流 [专家分:660] 发布于 2008-09-11 08:25:00
在VF6中运行正确。按cbl518老师的测试时间为:10.040秒。但对于1760条记录来说可能有一点儿慢了。
7 楼
cbl518 [专家分:57140] 发布于 2008-09-11 08:31:00
这是一例:无连接交叉查询的范例,所以它的速度和准确性值得探讨!
8 楼
qjbzjp [专家分:8830] 发布于 2008-09-11 09:55:00
不知道这样的结果对不对:
SELECT cb.*,a1.* FROM cb,a1 WHERE ALLTRIM(cb.zcbh) in (a1.g) into table 结果表
用时41秒。
9 楼
moz [专家分:37620] 发布于 2008-09-11 10:27:00
我想是我撞鬼了。
10 楼
cbl518 [专家分:57140] 发布于 2008-09-11 10:52:00
班主数据前面带有空格,与你给的示例数据不同,所以结果都是错误的!
SELECT a1.*,cd.* FROM a1,cd WHERE AT(ALLTRIM(cd.zcbh),a1.g)>0
SELECT a1.*,cd.* FROM a1 INNER JOIN cd ON AT(ALLTRIM(cd.zcbh),a1.g)>0
vfp 9: 以上的结果是 1760 条记录,速度在 p4 机中,20秒之内。
我来回复