MS Access中不明确的左连接

时间:2012-07-31 06:47:21

标签: sql-server tsql ms-access jet

我想从T-SQL转换以下查询

SELECT
    * 
FROM
    A                            LEFT JOIN
    B ON A.field1 = B.field1     LEFT JOIN
    C ON C.field1 = A.field2 AND
         C.field2 = B.field2

到Jet SQL。
现在MS Access不接受含糊不清的查询。我怎样才能做到这一点?我不能在WHERE子句中进行第二次比较。为什么?因为我的情况是我选择了C中不存在的记录。

How to select all records from one table that do not exist in another table?

现在,你在MS Access中怎么做?提前感谢您的时间和专业知识。

2 个答案:

答案 0 :(得分:3)

您需要一个派生表才能在MS Access中使用它:

SELECT * 
FROM (
   SELECT A.Field1, A.Field2 As A2, B.Field2 
   FROM A 
   LEFT JOIN B ON A.field1 = B.field1) AS x 
LEFT JOIN C ON  x.A2 = C.field1 AND  x.field2= C.field2 

答案 1 :(得分:0)

来自帮助LEFT JOIN, RIGHT JOIN Operations

  

您可以链接多个ON子句。请参阅子句链接的讨论   在INNER JOIN主题中查看如何完成此操作。

     

您还可以使用。链接JOIN语句中的多个ON子句   语法如下:

SELECT fields 
FROM table1 
     INNER JOIN table2 ON table1.field1 compopr table2.field1 
                          AND ON table1.field2 compopr table2.field2)
                          OR ON table1.field3 compopr table2.field3)];

但是这样做(似乎帮助中有错误):

SELECT * 
FROM A 
     LEFT JOIN B ON A.field1 = B.field1
     LEFT JOIN C ON (C.field1 = A.field2 AND C.field2 = B.field2)