回 帖 发 新 帖 刷新版面

主题:一字段包含另一表字段

有表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

请问代码如何写,谢谢!

回复列表 (共14个回复)

11 楼

[quote]我看过了以上的所有答案
无论是$号,还是At( )函数,
方向没有一个是正确的,
如果能得到正确答案,
我想是我撞鬼了。[/quote]

最终结果是 1760 条记录,用:
LOCATE FOR AT(ALLTRIM(zcbh),g)=0    没有合乎条件的纪录。
添加: DISTINCT 限制后,记录数是:1759

可以证明符合班主的条件。


班主在查询前,应该规范数据表中的数据!

12 楼

cbl518老师说得对,将空格去掉后,再用cbl518老师的代码,得到正确数据2738条,谢谢!
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

13 楼

这个世界果然特别的对待我.

14 楼

moz仁兄我对你解释下吧,看我第一贴的右下角“最后修改于2008-9-10 22:02:00”,
再看一楼的左上角”发表时间:2008-9-10 15:50:00“,因我原来发贴时将两表调乱了,
后来改回来,所以给你错觉了,
cbl518老师整体代码无错,只是TRIM(cd.zcbh) $ a1.g  少了1个右括号,将cb写成cd
这两点我是早就看到的,但因我太惰,没有写出来,
只要先对两表进行以下操作
repl all g with allt(g)
repl all zcbh with allt(zcbh)
再用cbl518老师的代码会生成1个2741个记录的新表,
再用distinct去掉重复值,会得到1个2738条记录的新表。
你不妨下载我的表,试试。
cbl518老师的一丁点写漏,整体代码是无错的,呵呵,怪只怪我太惰,很多时候惰得写!
 

我来回复

您尚未登录,请登录后再回复。点此登录或注册