2012-09-05 4 views
4

다른 사람의 MS Access 쿼리 문제를 해결하고 잘못된 연산 오류가 계속 발생하려고합니다. 내가 쿼리를 실행하고있을 때 도움말이 적용되지 않는 것 같습니다. 모두 INNER JOINS으로 작동하지만 다시 LEFT JOIN으로 전환하면 오류가 발생합니다. MS Access의 LEFT JOINS


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

DB 엔진은 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 가입 할 수 있습니다. 오류를 지나칠 수도 있습니다. orders 이외의 다른 테이블 CUST_ORDER_ID라는 이름의 필드가 포함 된 경우

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 

, 당신은 모호성을 피하기 위해 하위 쿼리 내에서 SELECT *가 아닌 다른 뭔가를해야합니다.

+2

고마워, 나는 이것이 나를 올바른 길로 인도하는 데 도움이되었다고 생각한다. (가) 이미 조회 한 조인 때문에, 나는 내부가 단일 쿼리로 조인 모든 재 작성 후, 좌 * 좌 Customer_Order_Parts.PART_ID = quoted_theory.PART_ID) 좌 Customer_Order_Parts ON 변환을 가입 ON quoted_theory JOIN ((Customer_Order_Parts FROM 을 선택'조인 추가 .PART_ID = 전환 .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 
관련 문제