2013-03-11 4 views
0

고유 레코드가 DC_No 필드 인 DCHDR 테이블과 다른 제품 및 수량으로 DC_Nos가 중복되는 트랜잭션 테이블 인 DCDTL이 있습니다. 아래 MYSQL 줄에서 MYSQL UNION 중복 레코드가 필요합니다.

, 나는 노동 조합이 개 테이블을 조인 할 수 있어요 예 기록은 DCDTL에 아래의 결과는, DCDTL에서 중복 레코드가 동일하지 만 내 요구 사항에 따라

예입니다 1이 표시되고 두 번째 레코드가 표시되지 않습니다.

예 : DCDTL 필드 및 데이터 -

DC_Nos, Product_Desc, Nos, Qty 
111  Oxygen 99.99, 4, 10 
111  Oxygen 99.99, 4, 10 

내가 UNIQUE 테이블에서 중복을 제거합니다 알고 있지만 DCDTL 표 심지어 동일한 레코드를 표시하는 다른 방법이있다. 제발.

DCHDR 표 :

DC_date  DC_Nos 
2013-01-01 111 
2013-01-02 112 
2013-01-03 113 

DCDTL 테이블 :

DC_Nos, Product_Desc, Nos, Qty 
111  Oxygen 99.99, 4, 10 
111  Oxygen 99.99, 4, 10 
111  Nitrogen,  9, 14 
112  Nitrogen,  8, 29 
113  Zero Air,  4, 15 

결과 필수 : ​​

아래
SELECT DC_No, DC_date, T.DC_Nos, T.Product_Desc, T.Nos, T.Qty 
    FROM DCHDR AS H 
    LEFT JOIN DCDTL AS T ON H.DC_No = T.DC_Nos 
    UNION 
    SELECT DC_No, DC_date, T.DC_Nos, T.Product_Desc, T.Nos, T.Qty 
    FROM DCHDR AS H 
    RIGHT JOIN DCDTL AS T ON H.DC_No = T.DC_Nos 

는 테이블 및 원하는 결과 양자의 샘플 데이터이다
DC_date  DC_Nos Product_Desc, Nos, Qty 
2013-01-01 111  Oxygen 99.99, 4, 10 
2013-01-01 111  Oxygen 99.99, 4, 10 
2013-01-01 111  Nitrogen,  9, 14 
2013-01-02 112  Nitrogen,  8, 29 
2013-01-03 113  Zero Air,  4, 15 
+0

원하는 결과가있는 견본 레코드를 제공 할 수 있습니까? –

+0

@JW. 편집 후 탭을 가져올 수 없으므로 친절하게 변명하지만 필요한 결과는 마지막에 언급되어 있습니다. –

답변

1

INNER JOIN을 사용하면 UNIONLEFT and RIGHT JOIN 일 때 왜 필요합니까?

SELECT a.DC_DATE, b.* 
FROM DCHDR a 
     INNER JOIN DCDTL b 
      ON a.DC_Nos = b.DC_Nos 

조인에 대해 더 친절하게 아래 링크를 방문, 더 많은 지식을 얻으려면 :

+0

나는 UNION ALL을 시도했다. 원하는 결과를 제공하지 못한다. DCDTL에있는 레코드의 거의 두 배를 생성하고있다. 현재 DCDTL에 530 개의 레코드가 있고, 'ALL'을 추가 한 후 결과는 1060입니다. –

+2

왜 'UNION'을 사용해야합니까? –

+0

@JW 나는 똑같은 것을 궁금해하고 있었다. 나는 OP가 여기에서 성취하고자하는 것을 이해하는 데 위의 샘플 데이터가 실제로 적절하지 않다고 생각합니다. –

1

이 쿼리는 당신이 원하는 결과를 줄 것이다 -

SELECT * FROM dchdr 
    LEFT JOIN dcdtl -- or maybe INNER JOIN 
    ON dchdr.DC_Nos = dcdtl.DC_Nos 

원하는 것은 무엇입니까?