Access不能表示连接子字符串的连接表达式

时间:2017-08-17 19:22:25

标签: sql ms-access join

我正在尝试在Access中构建一个复杂的查询。我使用了“不匹配的查询”向导来检查一个表中的多个字段是否与另一个表中的字段不匹配。其中一些需要是子串。基本上如果Table1.F的右边两个字符= Table2.F的右边2个字符。

如果我在SQL视图中编写它,我的SQL是正确的。但是当我尝试切换回设计视图时,我收到一条消息:

  

Microsoft Access无法在设计视图中表示连接表达式Right(Table1.F,2)= Right(Table2.F,2)。

这基本上就是我所拥有的:

UPDATE TABLE1 LEFT JOIN TABLE2 ON (TABLE1.A = TABLE2.A) AND (TABLE1.B = 
TABLE2.B)...
AND ( RIGHT(TABLE1.F,2) = RIGHT(TABLE2.F,2) )
SET TABLE1.ERROR = X
WHERE (TABLE2.A IS NULL) AND (TABLE2.B IS NULL)... ;

有没有办法以设计视图接受的方式编写它?

2 个答案:

答案 0 :(得分:0)

尊重mysql在ms-access中,设置值放在连接条件

之前
  UPDATE T 
  SET T.ERROR = X
  FROM TABLE1 AS T
  LEFT JOIN TABLE2 ON TABLE1.A = TABLE2.A 
        AND TABLE1.B = TABLE2.B ... 
           AND  RIGHT(TABLE1.F,2) = RIGHT(TABLE2.F,2)  
                AND TABLE2.A IS NULL AND TABLE2.B IS NULL ... ;

你可以避免unuseful()围绕比较,并且总体上不要使用左连接所涉及的表的列条件。  以这种方式作为内部连接的工作 移动左连接的on子句中的条件

答案 1 :(得分:0)

当我尝试使用在线工具格式化SQL查询时,我遇到了类似的问题。事实证明,如果方括号之前或之后有空格,则MS-access无法翻译查询的联合部分 例如

INNER JOIN Tb1 ON (Tb.F = Tb2.F1)

从sql转换为设计视图,但是

INNER JOIN Tb1 ON ( Tb.F = Tb2.F1 )

不会