728x90
반응형
SMALL
# 오류발생, INLINE VIEW 에서 생성한 가상테이블을 다시 호출시 오류
SELECT *
FROM ( SELECT department_id, count(*) cnt
FROM hr.employees
GROUP BY department_id ) d, ( SELECT MAX(cnt)FROM d ) m;
■ with 문(9i)
a. 두 번 이상 반복되는 SELECT 문을 QUERY BLOCK(가상테이블)를 만들어서 사용한다.
b. 성능을 향상시킬 수 있다.
c. WITH (별칭) AS (SELECT문)
WITH
가상 테이블1(QUERY BLOCK) AS (SUBQUERY1),
가상 테이블2(QUERY BLOCK) AS (SUBQUERY2),
가상 테이블3(QUERY BLOCK) AS (SELECT * FROM 가상테이블1),
...
가상 테이블N(QUERY BLOCK) AS (SUB QUERY)
SELECT *
FROM 가상테이블N, ...;
(WHERE 조인조건술어 ..
AND 조건
GROUP BY 절
HAVING 절 ...)
WITH
dept_cnt as ( SELECT department_id, count(*) as cnt
FROM hr.employees
GROUP BY department_id ),
dept_cnt_max as ( SELECT MAX(cnt) max_cnt FROM dept_cnt )
SELECT d2.*, l.city, d1.cnt 인원수
FROM dept_cnt d1, hr.departments d2, hr.locations l
WHERE d1.department_id = d2.department_id
AND d2.location_id = l.location_id
AND d1.cnt = ( SELECT max_cnt FROM dept_cnt_max ); /* 가장 많은 인원수 */
WITH 문 에서는
별칭을 먼저 작성하고 나서 SELECT문 을 쓰게 되는 규칙이 쓰다.
728x90
반응형
LIST