3

我想从 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 Access 中是如何做到的?提前感谢您的时间和专业知识。

4

2 回答 2

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 
于 2012-07-31T08:08:26.870 回答
0

从帮助LEFT JOIN、RIGHT JOIN 操作

您可以链接多个 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)
于 2012-07-31T08:10:28.653 回答