-SELECT句で使用するSubquery
・一般的なScalar Subqueryの例
--職業が'MANAGER'の社員名と部署名を出力する例 SQL> SELECT ename, 2 (SELECT dname FROM dept d WHERE d.deptno = e.deptno) dept 3 FROM emp e 4 WHERE job = 'MANAGER'; ENAME DEPT ---------- -------------- JONES RESEARCH BLAKE SALES CLARK ACCOUNTING
・NULLを返すOuter JoinのScalar SubQuery例
--Scalar Subqueryは一致する値が無いとNULLを返すのでOuter Joinと同じ
--下記は部署別最高給与情報を検索する例
--40部署には社員がいないので最高給与が検索されない。
SQL> SELECT d.deptno, d.dname,
2 (SELECT MAX(sal)
3 FROM emp
4 WHERE deptno = d.deptno) sal
5 FROM dept d;
DEPTNO DNAME SAL
---------- -------------- ----------
10 ACCOUNTING 5000
20 RESEARCH 3000
30 SALES 2850
40 OPERATIONS
--同じ結果のOuter Join例
SQL> SELECT d.deptno, d.dname, MAX(e.sal)
2 FROM dept d, emp e
3 WHERE d.deptno = e.deptno(+)
4 GROUP BY d.deptno, d.dname
5 ORDER BY d.deptno;
DEPTNO DNAME MAX(E.SAL)
---------- -------------- ----------
10 ACCOUNTING 5000
20 RESEARCH 3000
30 SALES 2850
40 OPERATIONS
0 件のコメント:
コメントを投稿