| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2338 人关注过本帖, 1 人收藏
标题:请大神指导查询,比对问题
只看楼主 加入收藏
wjx6769
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-10-26
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:68 
请大神指导查询,比对问题
表1
序号   结果
1    05601
2    47896
3    81222
4    48068
5    54969
..............
表2
序号   结果
1     005
2     048
3     128
4     379
5     468
..............

想要比对两个表,把表2不在表1里的数显示出来。不考虑数字顺序,比如:05601,就算包含有005。
2015-10-26 16:13
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:2 
列出详细规则

坚守VFP最后的阵地
2015-10-26 16:26
wjx6769
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-10-26
收藏
得分:0 
可能我说的不清楚。

表2里的数是3位数,表1是5位数。不考虑数字顺序,比如:表1里的  05601,就算包含了表2里的005。

现在想要的结果是——把表2不在表1里的数显示出来。比如:表2里的379就不在表1里,表1没有任何一组数含有379。

请大神指导。谢谢!
2015-10-26 16:57
muyubo
Rank: 9Rank: 9Rank: 9
来 自:山东莱芜
等 级:蜘蛛侠
威 望:3
帖 子:471
专家分:1017
注 册:2011-3-6
收藏
得分:2 
字段“结果”是什么数据?
05601,就算包含有005。这算什么?
2015-10-26 16:59
wjx6769
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-10-26
收藏
得分:0 
应该是模糊查询问题。我不会用啊。
字段“结果”就是数而已。
05601  就含有  005  这三个数
47896  就含有  468
81222  就含有  128

而没有任何一组数含有 379 ,需要的就是比对出 379 来。要的是 “不包含” 的结果。
2015-10-26 17:11
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:2 
05601  就含有  000  这算不算包含??
2015-10-26 17:13
wjx6769
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-10-26
收藏
得分:0 
不算。   如果  05601 是  05600 或者 05001…… ,就算包含。主要是表2是3位数,要同时包含。
2015-10-26 17:19
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
clear
*表1
CREATE CURSOR 表1(序号 INT,结果 C(10))
INSERT INTO 表1(序号,结果) VALUES(1,'05601')
INSERT INTO 表1(序号,结果) VALUES(2,'47896')
INSERT INTO 表1(序号,结果) VALUES(3,'81222')
INSERT INTO 表1(序号,结果) VALUES(4,'48068')
INSERT INTO 表1(序号,结果) VALUES(5,'54969')

*表2
CREATE CURSOR 表2(序号 INT,结果 C(10),包含 C(2))
INSERT INTO 表2(序号,结果) VALUES(1,'005')
INSERT INTO 表2(序号,结果) VALUES(2,'048')
INSERT INTO 表2(序号,结果) VALUES(3,'128')
INSERT INTO 表2(序号,结果) VALUES(4,'379')
INSERT INTO 表2(序号,结果) VALUES(5,'468')

select 表2
GO TOP
SCAN
JG=ALLTRIM(结果)
XH=序号
BH='否'
cWhere=''
FOR I=1 TO LEN(JG)
    cWhere=IIF(EMPTY(cWhere),"结果 LIKE "+"'%'+'"+SUBSTR(JG,I,1)+"'+'%'",cWhere+" and 结果 LIKE "+"'%'+'"+SUBSTR(JG,I,1)+"'+'%'")
ENDFOR
cCmd="SELECT * FROM 表1 where "+cWhere+" and 序号=XH INTO CURSOR TMP"
?cCmd
SL=SELECT()
EXECSCRIPT(cCmd)
IF RECCOUNT()>0
   SELECT (SL)
   REPLACE 包含 WITH "是"
ENDIF
ENDSCAN
SELECT (SL)
BROWSE
2015-10-26 17:29
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
如果 05601 算包含000,上面的就可以,如果不算,上面的就不完美
2015-10-26 17:31
wjx6769
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-10-26
收藏
得分:0 
感谢各位大神。谢谢!

不过,表不是只有5行的。表1有几千行,表2有100多行。5555~~   

主要考虑的是两张表的“结果”字段,“序号”只是个序号而已。
2015-10-26 17:43
快速回复:请大神指导查询,比对问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045670 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved