2014-11-25 2 views
-4

im은 이름과 로트 번호의 모든 데이터를 결합한 후 두 테이블간에 서로 다른 제품의 서로 다른 상태를 검색하는 방법을 고수했다.SQL 문을 작성하는 방법

SELECT c.name, c.lot_no, t1 AS Product 1, t2 AS Product 2 
FROM (SELECT name, lot_no FROM table_product1 
UNION SELECT name, lot_no FROM table_product2) c 
RIGHT JOIN                     table_product1.status t1 ON ((c.name = name) AND (c.lot_no = lot_no)) 
RIGHT JOIN 
table_product2.status t2 ON ((c.name = name) AND (c.lot_no = lot_no)) 

table_product1 : 이름, lot_no, 상태

table_product2 : 이름, lot_no, 상태 -> 테이블 C : 이름, lot_no, 상태 제품 1, 상태 제품이

답변

0

권리를 이렇게함으로써 두 상태 테이블 모두에 가입하십시오. 상태 테이블의 양쪽에없는 제품은 제외됩니다. 다음과 같이 시도해보십시오.

SELECT 
    c.name 
    ,c.lot_no 
    ,t1.status AS "Product 1" 
    ,t2.status AS "Product 2" 
FROM (
    SELECT name, lot_no FROM table_product1 
    UNION 
    SELECT name, lot_no FROM table_product2 
) c 
JOIN table_product1 t1 ON ((c.name = name) AND (c.lot_no = lot_no)) 
JOIN table_product2 t2 ON ((c.name = name) AND (c.lot_no = lot_no)) 

해당 제품에 대한 상태가없는 경우 두 열 또는 두 열 모두에 널 (null)이 표시되어야합니다. 당신은 모두 열에서 null을 제거하려는 경우, 당신은이를 추가 할 수 있습니다.

WHERE t1.status is not null and t2.status is not null 

(나는 "상태"라고 T1과 T2의 열이 추정하고있어 열 이름이 다른 경우, ' 그것을 바꿀 필요가 있습니다.)

+0

예. 열 이름이 다릅니다. 그게 왜 내가이 코드에 미치지 못하는지. 나는 그것을 해결할 생각이 없다. – den

+0

내 대답이 도움이 되었습니까? 알아 냈어? 아직도 도움이 더 필요하십니까? 죄송합니다. 잠시 동안이 스레드를 잃어 버렸습니다. – Derek

관련 문제