2012-09-05 123 views
4

我正在嘗試排查別人的MS Access查詢並不斷收到無效操作錯誤。該幫助似乎並不適用,因爲我只是在運行查詢。它的全部工作爲INNER JOINS,但當我切換回LEFT JOIN的錯誤。MS Access中的左連接


SELECT * 
FROM ((((orders 
INNER JOIN orders_customers ON orders.CUST_ORDER_ID = orders_customers.ID) 
LEFT JOIN quoted_theory ON orders.PART_ID = quoted_theory.PART_ID) 
LEFT JOIN conversions ON orders.PART_ID = conversions.PART_ID) 
LEFT JOIN dbo_WO_Header ON orders.CUST_ORDER_ID = dbo_WO_Header.PPC_Number) 
INNER JOIN lines_qry ON orders.CUST_ORDER_ID = lines_qry.WORKORDER_BASE_ID 

我可以得到的LEFT JOIN一個級別,但每次我添加第二個LEFT JOIN錯誤彈出。

+0

這對我有用。這個問題是否與一些被調用的查詢有關? –

回答

3

當混合INNER和LEFT連接時,訪問數據庫引擎頻繁地出現混亂。如果該查詢作品,未經最後內加入...

SELECT * 
FROM 
    (((orders INNER JOIN orders_customers 
    ON orders.CUST_ORDER_ID = orders_customers.ID) 
    LEFT JOIN quoted_theory 
    ON orders.PART_ID = quoted_theory.PART_ID) 
    LEFT JOIN conversions 
    ON orders.PART_ID = conversions.PART_ID) 
    LEFT JOIN dbo_WO_Header 
    ON orders.CUST_ORDER_ID = dbo_WO_Header.PPC_Number 

...那麼你可以嘗試那一部分,子查詢和內連接lines_qry子查詢。它可能會超過錯誤。

SELECT * 
FROM 
    (
     SELECT * 
     FROM 
      (((orders INNER JOIN orders_customers 
      ON orders.CUST_ORDER_ID = orders_customers.ID) 
      LEFT JOIN quoted_theory 
      ON orders.PART_ID = quoted_theory.PART_ID) 
      LEFT JOIN conversions 
      ON orders.PART_ID = conversions.PART_ID) 
      LEFT JOIN dbo_WO_Header 
      ON orders.CUST_ORDER_ID = dbo_WO_Header.PPC_Number 
    ) AS sub 
    INNER JOIN lines_qry 
    ON sub.CUST_ORDER_ID = lines_qry.WORKORDER_BASE_ID 

如果除了orders任何其他表包含一個名爲CUST_ORDER_ID場,你將需要子查詢中比其他SELECT *東西以避免歧義。

+2

謝謝,我認爲這有助於我走上正軌。由於連接已經是查詢,我重寫了所有內部連接作爲單個查詢,然後附加了LEFT JOIN SELECT * FROM((Customer_Order_Parts LEFT JOIN quoted_theory ON Customer_Order_Parts.PART_ID = quoted_theory.PART_ID) LEFT JOIN轉換到Customer_Order_Parts .PART_ID = conversions.PART_ID) LEFT JOIN dbo_WO_Header ON Customer_Order_Parts.CUST_ORDER_ID = dbo_WO_Header.PPC_Number' – Paul

0
SELECT * 
FROM 
    (
     SELECT * 
     FROM 
      (((orders INNER JOIN orders_customers 
      ON orders.CUST_ORDER_ID = orders_customers.ID) 
      LEFT JOIN quoted_theory 
      ON orders.PART_ID = quoted_theory.PART_ID) 
      LEFT JOIN conversions 
      ON orders.PART_ID = conversions.PART_ID) 
      LEFT JOIN dbo_WO_Header 
      ON orders.CUST_ORDER_ID = dbo_WO_Header.PPC_Number 
    ) AS sub 
    INNER JOIN lines_qry 
    ON sub.CUST_ORDER_ID = lines_qry.WORKORDER_BASE_ID