(+) 가 뭔지 몰라서 헤메다 쓴다.
SELECT *
FROM TEMP
LEFT JOIN TEMP2 ON TEMP.CD = TEMP2.CD
와
SELECT *
FROM TEMP, TEMP2
WHERE TEMP.CD = TEMP2.CD(+)
는 동일한 구문이다.
LEFT JOIN 이기 때문에 기준이 되지못한 테이블에 조건을 줘야할 경우
그냥 TEMP2.CD = 1 이렇게 주면 기준테이블에 없을 경우 기준테이블도 안나오게된다.
이럴땐 TEMP2.CD(+) = 1
이런식으로 주게되면 된다.
설명 참 못한다.
예제.
WITH TEMP AS ( --임시테이블 생성
SELECT 'A' AS "NAME", '1' AS "CD" FROM DUAL
UNION
SELECT 'B' AS "NAME", '2' AS "CD" FROM DUAL
UNION
SELECT 'C' AS "NAME", '1' AS "CD" FROM DUAL
UNION
SELECT 'D' AS "NAME", '2' AS "CD" FROM DUAL
UNION
SELECT 'E' AS "NAME", '2' AS "CD" FROM DUAL
UNION
SELECT 'F' AS "NAME", NULL AS "CD" FROM DUAL
),
TEMP2 AS(
SELECT '1' AS "CD", 'GOOD' AS "CD_NM" FROM DUAL
UNION
SELECT '2' AS "CD", 'BAD' AS "CD_NM" FROM DUAL
)
SELECT * FROM TEMP, TEMP2 WHERE TEMP.CODE = TEMP2.CD(+)
댓글 없음 :
댓글 쓰기