SSISO Community

시소당

오라클: 테이블의 검색한 컬럼값을 다시 where절에서 비교하는 쿼리

테이블 구조

 

 프로젝트 테이블
     프로젝트코드 pk is not null
     고객코드

 

고객테이블
     고객코드 pk is not null
     고객명
     메모

 

문제
고객의 프로젝트 수를 구해라.

 

해답
SELECT c.고객코드,  count(p.고객코드), c.고객명, c.메모
FROM 고객테이블 c LEFT OUTER JOIN 프로젝트테이블 p
on (c.고객코드 = p.고객코드 )
group by c.고객코드, p.고객코드, c.고객명, c.메모
order by c.고객코드

 

추가사항
고객테이블의 고객코드는 널값이 허용되지 않으므로 LEFT OUTER JOIN을 사용.
만약 두개의 비교 테이블이 모두 널값을 허용한다면 널값도 가져오는
FULL OUTER JOIN을 사용하면 된다. 여기서 프로젝트수의 0값을 가져오기 위해
(즉, 프로젝트 테이블에서 고객테이블의 고객코드를 하나도 선택하지 않은 고객코드)
를 표시하기 위해서 널값이 허용되는 프로젝트 테이블의 고객코드를 카운트했다.

1818 view

4.0 stars