2012-07-31 123 views
3

我想下面的查詢從T-SQL曖昧左聯接在MS Access

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訪問?預先感謝您的時間和專業知識。

回答

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 
+0

哎唷!在MS Access中這是非常痛苦的查詢!選擇爲正確的答案。 – yoitsfrancis 2012-07-31 08:12:18

0

從幫助LEFT JOIN, RIGHT JOIN Operations

您可以鏈接多個ON子句。請參閱INNER 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) 
+0

Mine在查詢表達式中返回錯誤語法錯誤(缺少操作符)「 – yoitsfrancis 2012-07-31 08:19:17

+0

Hi Igor,我想澄清一下,如果你已經測試了腳本,是不是應該在表B和C或A和B中使用括號? – yoitsfrancis 2012-08-01 02:56:35

+0

@yoitsfrancis是的,我已經測試過腳本和括號,因爲在我上次更新的腳本中是必不可少的。 – 2012-08-01 05:13:23