outer join의 경우에 어떤 조건을 추가할떄요..
a *= b의 경우에요
a 테이블에 대한 조건은 처리를 하는데요
*쪽이 아닌 b테이블 조건은 처리하지 못해요..
b테이블 조건을 처리하려면 어찌해야 되나요?
예제를 보면요
create table TB_001(TB_ID CHAR(3), AMT INTEGER )
create table TB_002(TB_ID CHAR(3), TB_NM VARCHAR2(20) )
INSERT INTO TB_001 values('AAA', 1000);
INSERT INTO TB_001 values('BBB', 2000);
INSERT INTO TB_001 values('CCC', 3000);
INSERT INTO TB_001 values(NULL, 5000);
INSERT INTO TB_002 values('AAA', 'A NAME');
INSERT INTO TB_002 values('BBB', 'B NAME');
INSERT INTO TB_002 values('CCC', 'C NAME');
이런 테이블과 데이터가 존재할떄..
TB0001에 NULL값이 있는데 NULL값까지 모두 보여주기 위해서 아래처럼 OUTER JOIN을 했습니다..
SELECT A.TB_ID, A.AMT, B.TB_NM
FROM TB_001 A, TB_002 B
WHERE A.TB_ID *= B.TB_ID
GO
(여기까지는 만족)
근데
이런경우에 어떤 조건을 넣고 싶다면.. (조건 TB_NM = 'A NAME')
SELECT A.TB_ID, A.AMT, B.TB_NM
FROM TB_001 A, TB_002 B
WHERE A.TB_ID *= B.TB_ID
AND TB_NM = 'A NAME'
GO
위의 SQL결과는 A NAME인것만 보여주지 못하더라구요.
A NAME만 가져오라는 조건과 상관없이 TB_001의 데이터를 모두 가져 오더라구요
사이베이스에서 모든 조건에 맞게(A NAME인 것) 데이터를 만든후에 OUTER JOIN을 하는것 같아요..
OUTER JOIN을 먼저 해서 그 중 에서 A NAME을 걸려야 되는데요..
OUTER 조인후 A NAME를 찾을 방법이 없을까요?
파싱 우선순위를 조건을 먼저 찾게 한다든가,, 그 어떤 방법이라두 ,,답변 부탁드립니다..^^
|