select colA from tableA a
left outer join tableB b
on a.colA = b.colA
이 쿼리에서
select colA from tableA a
left outer join tableB b
on a.colA = b.colA
and b.colB = \'Y\' <- 이 부분 추가하고 싶음
이게 원래 안 되는 거임?
안 되서
select colA from tableA a
left outer join
(select * tableB where colB = \'Y\') b
on a.colA = b.colA
이런 식으로 했는데...
left outer join tableB b
on a.colA = b.colA
이 쿼리에서
select colA from tableA a
left outer join tableB b
on a.colA = b.colA
and b.colB = \'Y\' <- 이 부분 추가하고 싶음
이게 원래 안 되는 거임?
안 되서
select colA from tableA a
left outer join
(select * tableB where colB = \'Y\') b
on a.colA = b.colA
이런 식으로 했는데...
from이 빠져서 안되는것 아닐까요?
원래 안 되는거임. 왜냐하면 아우터조인으로 만들어지는 집합에는 b가 있건 없건 모든 a가 포함되는데 반해, b에 조건을 줘버리면 반드시 존재하는 b에 대해서 결과 집합이 만들어지기 때문임.
따라서 b에 조건을 먹여 인라인뷰로 만들고 아우터 조인을 하면 됨. 말로 설명하려니 힘듦. 그림으로 집합을 그리면 쉬운데..
outer join (select * from tableB where colB = \'y\') b