ANSI OUTER JOIN 을 썼더니 그냥 OUTER JOIN 과 결과가 다른데...뭐가 다른것인지 모르겠습니다... 0 1 1,194

by 빠쿄 ANSI OUTER JOIN [2009.08.21 09:29:33]


위 쿼리는 일반 아우터 조인이라 LOT_ID(+) 를 썼고요

아래 있는 쿼리는 책에서 본대로 FROM 부분에 LEFT OUTER JOIN 을 추가하고 WHERE 을 ON 으로 바꿨어요

그리고 (+) 부분을 없앴습니다.

그런데 결과는 완전 딴판 이네요;;아흐.....

LEFT OUTER JOIN 을 쓰는 부분에서 WHERE 절을 ON 으로 고치면서 실수를 한것 같은데

뭐가 문제인지좀 알려주시면 정말 감사하겠습니다. 

SELECT B.AGING_TIME,B.AGING_END_TIME,B.LIFE_END_TIME, A.* 
FROM CWIPMATAGI B, MWIPLOTSTS A WHERE A.MAT_ID IN   
(SELECT MAT_ID FROM MWIPMATDEF WHERE MAT_TYPE IN
(SELECT KEY_1 FROM MGCMTBLDAT WHERE FACTORY='HMKA1' AND TABLE_NAME='MATERIAL_TYPE' AND DATA_2='Y'))

AND A.LOT_ID = B.LOT_ID(+) ORDER BY A.LOT_ID;

--------------------------------------------------------------------------------------------------------------------


SELECT B.AGING_TIME,B.AGING_END_TIME,B.LIFE_END_TIME, A.* 
FROM MWIPLOTSTS A LEFT OUTER JOIN CWIPMATAGI B ON A.MAT_ID IN
(SELECT MAT_ID FROM MWIPMATDEF WHERE MAT_TYPE IN
(SELECT KEY_1 FROM MGCMTBLDAT WHERE FACTORY='HMKA1' AND TABLE_NAME='MATERIAL_TYPE' AND DATA_2='Y'))

AND A.LOT_ID = B.LOT_ID;

by 빠쿄 [2009.08.21 09:34:09]
으허허 글쓰자마자 해결했습니다. ㅎㅎ

SELECT B.AGING_TIME,B.AGING_END_TIME,B.LIFE_END_TIME, A.*
FROM MWIPLOTSTS A LEFT OUTER JOIN CWIPMATAGI B ON (A.LOT_ID = B.LOT_ID) WHERE A.MAT_ID IN
(SELECT MAT_ID FROM MWIPMATDEF WHERE MAT_TYPE IN
(SELECT KEY_1 FROM MGCMTBLDAT WHERE FACTORY='HMKA1' AND TABLE_NAME='MATERIAL_TYPE' AND DATA_2='Y'));
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입