| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3728 人关注过本帖, 1 人收藏
标题:如何嵌套,找出两表中不一样的数据?
只看楼主 加入收藏
llww425
Rank: 1
等 级:新手上路
帖 子:43
专家分:3
注 册:2014-1-24
收藏
得分:0 
是不是用这个命令之前还得先写上use哪张表/?
2014-01-26 09:23
llww425
Rank: 1
等 级:新手上路
帖 子:43
专家分:3
注 册:2014-1-24
收藏
得分:0 
回复 8楼 sdta
来帮我看看,为什么提示语法错误,,,,
SELECT grbh1,xm1,grbh2,xm2 FROM (SELECT NVL(a.grbh,[]) grbh1,NVL(a.xm,[]) xm1,NVL(b.grbh,[]) grbh2,NVL(b.xm,[]) xm2 FROM 表1557 a FULL JOIN 表1561 b ON a.grbh==b.grbh) a WHERE grbh1!=grbh2
 我把表1557和表1561换成另外两个表,怎么提示“语法错误”?
2014-01-26 09:25
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
vfp版本为9.0

坚守VFP最后的阵地
2014-01-26 09:34
llww425
Rank: 1
等 级:新手上路
帖 子:43
专家分:3
注 册:2014-1-24
收藏
得分:0 
哦,,,这个原因啊,,,那我还是更新下版本吧,,
2014-01-26 09:43
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用llww425在2014-1-26 09:01:19的发言:

正在从头学,,,找了几份教程,,有时候看着书本写出来的命令,老是报错不知道什么原因。。。。
 
还有,,,“$”这个符号是什么意思,,例:DELETE 表1557 from 减5 where 表1557.grbh$减5.grbh   
 
我百度不到,,,猜了一下,表1557.grbh$减5.grbh 是不是表1557和减5自动匹配相同字段来查找相同条目???????

“$”在FoxPro中是属于的意思,按数学中集合的概念来说,就是判断前者(子集)是否在后者(父集)中。比如:[BA]$'CBA'的结果为真,[AB]$'CBA'的结果就为假(子集中元素的顺序不对)。它和“=”有相同点,也有区别。相同点是:(1)都只判断字串中的一部分;(2)都要求整体判断(即子串中各字符的顺序要完全匹配);(3)都区分大小写;区别是:(1)“$”运算符的子串在前,父串在后;而“=”的顺序反之;(2)“$”运算符判断时,只要子串整个地被包含在父串中,不论它在父串的什么位置都认为结果是真;“=”判断时,只从左边第一位开始。也即,子串必须位于父串的最左边,且整体包含,并大小写匹配,结果才为真。

举几个栗子:[BA]$'CBA'=.T.;[Ba]$'CBA'=.F.,因为大小写不匹配;[AB]$'CBA'=.F.,因为不符合整体包含的要求;'BAC'=[BA]为.T.;'BAC'=[bA]为.F.;'CBA'=[BA]为.F.,因为其不符合从父串最左边开始的要求。
2014-01-26 09:49
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用llww425在2014-1-26 09:25:06的发言:

来帮我看看,为什么提示语法错误,,,,
SELECT grbh1,xm1,grbh2,xm2 FROM (SELECT NVL(a.grbh,[]) grbh1,NVL(a.xm,[]) xm1,NVL(b.grbh,[]) grbh2,NVL(b.xm,[]) xm2 FROM 表1557 a FULL JOIN 表1561 b ON a.grbh==b.grbh) a WHERE grbh1!=grbh2
 我把表1557和表1561换成另外两个表,怎么提示“语法错误”?
9.0比以前各版本都好得多,强烈建议长期使用者用9.0版本的VFP。
2014-01-26 09:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 楼主 llww425
是不是1557中有3個,1561中有7個?

授人以渔,不授人以鱼。
2014-01-26 13:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不需要換版本的

授人以渔,不授人以鱼。
2014-01-26 13:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
要改哪個表,就修改哪個參數:

程序代码:
CLEAR ALL
SET SAFETY OFF 
CLOSE TABLES ALL
CLEAR
Comparison("表1557", "表1561", "grbh")
Reduce("减5", "表1561", "grbh")
CLOSE TABLES ALL
CLEAR ALL
RETURN 

PROCEDURE Comparison(tcSourceTable, tcTargetTable, tcField)
   
    SET DELETED OFF
    USE (tcSourceTable) ALIAS table1 IN 0
    SELECT table1
    RECALL ALL IN table1
    INDEX ON &tcField TO (tcSourceTable)
    USE (tcTargetTable) ALIAS table2 IN 0
    SELECT table2
    RECALL ALL IN table2
    INDEX ON &TcField TO (tcTargetTable)
   
    SELECT table1
    SCAN ALL
        IF !SEEK(EVALUATE(tcField), "table2")
            Print_Record("table1")
        ENDIF
    ENDSCAN
    ?
       
    SELECT table2
    SCAN ALL
        IF !SEEK(EVALUATE(tcField), "table1")
            Print_Record("table2")
        ENDIF
    ENDSCAN
   
    USE IN table1
    USE IN table2
   
ENDPROC 

PROCEDURE Print_Record(tcAlias)
    LOCAL lnIndex
    FOR lnIndex = 1 TO FCOUNT(tcAlias)
        ?? SPACE(4) + EVALUATE(tcAlias + "." + FIELD(lnIndex, tcAlias))
    NEXT
    ?
ENDPROC 

PROCEDURE Reduce(tcTable, tcTargetTable, tcField)

    USE (tcTargetTable) ALIAS source INDEX (tcTargetTable) IN 0
    USE (tcTable) IN 0
    SELECT (tcTable)
    SCAN ALL
        IF SEEK(EVALUATE(tcField), "source")
            DELETE IN source
        ENDIF
    ENDSCAN
    USE IN (tcTable)
    USE IN source
   
ENDPROC


授人以渔,不授人以鱼。
2014-01-26 14:04
快速回复:如何嵌套,找出两表中不一样的数据?
数据加载中...
 
   



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

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