暧昧左联接在MS Access(Ambiguous left joins in MS Access)

2019-06-26 15:53发布

我想从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.记录

如何选择一个表中的所有记录不另一个表存在吗?

现在,你怎么在MS访问? 在此先感谢您的时间和专业知识。

Answer 1:

你需要一个派生表,使在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 


Answer 2:

从帮助LEFT JOIN,RIGHT JOIN操作

你可以在条款链接多个。 见第联在内部加入讨论的话题,看看如何做到这一点。

您也可以链接多个ON子句的JOIN语句,使用的语法如下:

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)


文章来源: Ambiguous left joins in MS Access