A테이블과 B테이블을 조인하여 C테이블과 같은 결과를 출력하고 싶습니다.
A테이블을 기준으로 오더를 비교하여 업체를 넣어주는 것인데
SELECT * FROM A LEFT OUTER JOIN B ON A.오더 = B.오더
로 하면 행이 6개로 나와 버립니다. 어떻게 쿼리를 짜야 되나요 조언 좀 부탁 드립니다.
A table | |
오더 | 품목 |
GS151661 | 91-1503090 |
GS151661 | 91-1503091 |
GS151661 | 91-1503092 |
GS150475 | 91-1501137 |
B table |
||
오더 | 품목 | 업체 |
GS151661 | 91-1503092 | 전주-현대 |
GS150475 | 91-1501137 | 기아-아산 |
GS150475 | 91-1501138 | 기아-아산 |
GS150475 | 91-1501142 | 기아-아산 |
C table ( 원하는 결과 값 ) |
||
오더 | 품목 | 업체 |
GS151661 | 91-1503090 | 전주-현대 |
GS151661 | 91-1503091 | 전주-현대 |
GS151661 | 91-1503092 | 전주-현대 |
GS150475 | 91-1501137 | 기아-아산 |
--예시가 이상한건지..
--제가 잘못 이해를 한건지..
--여튼 결과는 나오게끔 한 쿼리입니다..
--한 오더가 무조건 한 업체로 나간다면..
--Order 테이블, Detail 테이블로 분리후
--Order 테이블 = 오더번호,업체정보
--Detail 테이블 = 오더번호,품목 외
--저런 형태로 되어있으면..그냥 join 해서 가져오면..
--Order 테이블이랑 Detail 테이블 조인하면 심플할거 같은데..
--품목의 경우는 항시 변경될 소지가 많으니까요..(추가/수정/삭제 외)
--예시의 오류로 이런 말씀을 드리는 걸수도 있으니..
--그냥 참고만 하세요 -_-;;; ( 저도 하수임.. )
--쿼리 시작
With A (오더,품목) As
(
Select 'GS151661','91-1503090' Union All
Select 'GS151661','91-1503091' Union All
Select 'GS151661','91-1503092' Union All
Select 'GS150475','91-1501137'
)
,B (오더,품목,업체) As
(
Select 'GS151661','91-1503092','전주-현대' Union All
Select 'GS150475','91-1501137','기아-아산' Union All
Select 'GS150475','91-1501138','기아-아산' Union All
Select 'GS150475','91-1501142','기아-아산'
)
Select
a.오더 As 오더
,a.품목 As 품목
,b.업체 As 업체
From A As a
Left Outer Join
(
Select
a.오더 As 오더
,a.업체 As 업체
From B As a
Group By a.오더
,a.업체
) b
On a.오더 = b.오더
--쿼리 끝