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.