2013/08/28

11-06.サブクエリ(Subquery)【Scalar Subquery】

■Scalar Subqueryとは
 -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 件のコメント:

コメントを投稿

QLOOKアクセス解析