3章複数テーブルの扱い

本章は、複数テーブルからのデータを組み合わせるための結合(join)と集合(set)演算を紹介します。結合はSQLの基礎です。集合演算も重要です。本書の今後の章に出てくる複雑なクエリを習得したければ、結合と集合演算から始める必要があります。

レシピ3.1 ある行セットを別の行セットの上にスタックする

問題

複数テーブルに格納されているデータを、概念的にある結果セットを別の結果セットの上にスタックして返したい。テーブルは必ずしも共通キーを持っているわけではないが、同じデータ型の列を持っている。例えば、EMPテーブルの部署10の従業員の名前と部署番号を、DEPTテーブルにある部署名と部署番号を表示したい。例えば、次のような結果セットを表示したい。

ENAME_AND_DNAME      DEPTNO
---------------  ----------
CLARK                    10
KING                     10
MILLER                   10
----------
ACCOUNTING               10
RESEARCH                 20
SALES                    30
OPERATIONS               40

解決策

集合演算UNION ALLを使って、複数テーブルからの行を統合します†1

[†1] 監訳者注:ピボットテーブルとしてT1を用いている。事前にT1を作成しておく必要がある。定義については本書の「はじめに」「本書で使うテーブル」を参照。

 select ename as ename_and_dname, deptno
   from emp
  where deptno = 10
  union all
 select '----------', null
   from t1
  union all
 select dname, deptno ...

Get SQLクックブック 第2版 ―データベースエキスパート、データサイエンティストのための実践レシピ集 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.