WHERE 절은 반환 될 수있는 결과를 제한합니다.
where h.attributT1_1 = k.attributT3_1
and s.attributT3_1 = ' 260585'
and h.attributT1_2 = 055
이는 테이블 H, K 및 S가 행 (널이 아님)에 기여한 결과 만 표시됨을 의미합니다. 실제로 조인에서 OUTER를 제거했습니다. 이러한 조건을 조인 정의로 이동해보십시오.
내가 의미하는 바를 보여주는 예 :
SQL> create table t1 (id integer, text varchar2(10));
SQL> create table t2 (id integer, text varchar2(10));
SQL> insert into t1 values (1, 'text');
SQL> insert into t1 values (2, 'text');
SQL> insert into t2 values (2, 'text');
SQL> insert into t2 values (3, 'text');
SQL> commit;
완전 외부 결합 :
SQL> select * from t1 full outer join t2 on t1.id = t2.id;
ID TEXT ID TEXT
---------- ---------- ---------- ----------
2 text 2 text
3 text
1 text
이제 WHERE 절에 필터가 있습니다 ( "전체 외부"가없는 것처럼 2 개의 레코드가 사라집니다).
1* select * from t1 full outer join t2 on t1.id = t2.id
2* where t1.text='text'
3 and t2.text='text';
ID TEXT ID TEXT
---------- ---------- ---------- ----------
2 text 2 text
이제 필터를 조인으로 이동했습니다.
SQL> select * from t1 full outer join t2 on t1.id = t2.id
2 and t1.text='text'
3 and t2.text='text';
ID TEXT ID TEXT
---------- ---------- ---------- ----------
2 text 2 text
3 text
1 text
출처
https://stackoverflow.com/questions/2005974