2017-01-16 2 views
-2

3 개의 테이블을 조인해야합니다. 그들은 SQL 여러 조건에 3 개의 테이블 조인

표 A를 포함 - Order_ID라고, PRODUCT_ID, 수량

표 B를 - Order_ID라고, TRANSACTION_ID

표 C - TRANSACTION_ID, PRODUCT_ID, PRODUCT_PRICE

을 내가 좋아하는 그들과 합류 할 때 :

LEFT JOIN table_B b on b.order_id = a.order_ID 

LEFT JOIN table_C on c.product_id = a.product_ID AND c.transaction_ID = b.transaction_ID 

테이블 C가 2 개의 테이블에 링크되어 product_id를 매칭하지 않고 transaction_ID와 일치하는 경우 null 레코드를 생성합니다. 그리고 제가 그 양을 합하면 그것은 사라집니다. 이것을 해결하는 가장 쉬운 방법은 무엇입니까?

즉각적인 문제에 대한
+2

일부 데이터, 전체 쿼리, 실제 출력 및 예상 출력을 포함하십시오. – shmosel

+1

주문과 거래의 차이점은 무엇입니까? 제품이 둘 다 나타날 수 있다는 것이 이상하게 보입니다. – Strawberry

답변

0

, 당신은 할 수 :

select sum(case when b.order_id is not null and c.product_id is not null 
       then a.qty 
      end) 
from a left join 
    b 
    on b.order_id = a.order_ID left join 
    c 
    on c.product_id = a.product_ID and 
     c.transaction_ID = b.transaction_ID; 

당신은 매우 이상한 데이터 모델을 가지고 않습니다. 수량이 거래 또는 제품 레코드와 함께 있으면 안됩니까? 어떤 경우 든 case은 요청한 특정 질문을 해결해야합니다.

+0

안녕하세요, 답변 주셔서 감사합니다. 실제로 나는 7 테이블에서 데이터를 결합하는 쿼리로 질문을 단순화하지만 어떤 식 으로든 추가 선택 및 왼쪽 조인을 통해 관리 할 수 ​​있습니다. –