2016-10-04 1 views
0

나는 여러 테이블을 판매합니다. 각 테이블의 상위 제품 (수량 값이 더 높음)을 선택하고 "유효 함은 마스터 테이블에서만 판매합니다 "각 판매 목록 테이블에서 다음 모든 테이블의 최고 제품을 선택하십시오.여러 테이블에서 상위 제품 선택 복제 제품을 결합하고 수량을 SUM으로 변환

내가하고 싶어하는 일

enter image description here

같은 제품에 두 개의 행이 볼 수 있듯이이 결합하는 것입니다 :

SELECT code_p, SUM(total) 
    FROM ( 
    SELECT code_p as code_p, SUM(qty_p) as total from table1_sells_list d 
    INNER JOIN table1 p ON d.code_t1 = p.code_t1 
    WHERE valid_t3 = true 
    GROUP BY code_p, qty_p 
----------------------------------------------------------------------- 
    UNION ALL 
    SELECT code_p, SUM(qty_p) as total from table2_sells_list a 
    INNER JOIN table2 c ON a.code_t2 = c.code_t2 
    WHERE valider_t3 = true 
    GROUP BY code_p, qty_p 
----------------------------------------------------------------------- 
    UNION ALL 
    SELECT code_p, SUM(qty_p) as total from table2_sells_list e 
    INNER JOIN table3 f ON e.code_t3 = f.code_t3 
    WHERE valider_t3 = true 
    GROUP BY code_p, qty_p 
    ) a 
    GROUP BY code_p, total 
    ORDER BY code_p, total DESC 

결과는 이것이다 : 이 내가 지금까지 한 일이다 중복 행과 SUM과 같은 합계 :

enter image description here

+0

* 테이블 사이의 판매 *를보고 싶지 않으십니까? 또한 샘플 데이터는 자신이하는 일을 분명히하는 데 도움이됩니다. –

+0

그냥 마지막 'GROUP BY code_p'에서'total'을 제거하십시오. – klin

+0

@klin 글쎄 이것은 잘 작동했지만 쿼리의 맨 위에있는 필드 이름을'totat'가 아닌 다른 것으로 변경해야합니다. 그렇지 않으면'GROUP BY 절에 나타나야합니다 .' 오류가 발생합니다. 감사합니다. – HamzaGeeK

답변

1

당신은에서 전체 쿼리를 포장 할 수 있습니다 a

SELECT code_p, sum(sum) 
FROM (<your original query>) x 
GROUP BY code_p; 
+0

감사합니다. woks, _klin_ 여기 뭔가 빠지다가 빨리 끝내고 있습니다. 그의 코멘트에서 추측 할 만하지만 개념이 도움이됩니다. 감사합니다. – HamzaGeeK

관련 문제