2012-09-05 124 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