SQLアタマアカデミー
第10回 結合大全 (5)非等値結合
非等値結合
自己結合の用途
ところで,
実は,
自己結合+非等値結合
そして,
たとえば,
リスト6 図1の部署テーブルに対して
SELECT D1.dept_id, D2.dept_id
FROM Departments D1 INNER JOIN Departments D2
ON D1.dept_id >= D2.dept_id;
図10 リスト6の実行結果
これは,
したがって,
リスト7 自己非等値結合で連番生成
SELECT D1.dept_id, COUNT(*) AS seq
FROM Departments D1 INNER JOIN Departments D2
ON D1.dept_id >= D2.dept_id
GROUP BY D1.dept_id;
図11 リスト7の実行結果
D1.dept_id seq ---------- --- 10 1 11 2 12 3 13 4
こういう自己結合の使い方は,
演習問題
それでは,
- 問題①:リスト8の
「自己」 クロス結合のコードは何行の結果を返すでしょう。 - 問題②:その結果は具体的にどのような中身になるでしょう。
リスト8 演習問題用
SELECT D1.digit + (D2.digit * 10) + (D3.digit * 100) AS seq
FROM Digits D1 CROSS JOIN Digits D2
CROSS JOIN Digits D3;
問題①には1秒で答えてください。問題②の制限時間は3分です。回答と解説は,
終わりに
結合演算は,
参考資料
- ミック
『達人に学ぶ SQL徹底指南書』 (翔泳社, 2008) 自己結合および外部結合については,
「1-2 自己結合の使い方」 および 「1-5 外部結合の使い方」 でさまざまな応用方法を紹介しています。本稿を読んで興味を持たれた方は, 参照するとより深い理解が得られるでしょう。
COLUMN 結合の簡略的な書き方について
本稿では演算のタイプという観点から,
本文では取り上げませんでしたが,
SELECT *
FROM Employees NATURAL JOIN Departments;
自然結合においては結合条件は記述せず,
SELECT *
FROM Employees E INNER JOIN Departments D
ON E.dept_id = D.dept_id;
自然結合は,
この自然結合と内部結合の中間みたいな道具として,
SELECT *
FROM Employees INNER JOIN Departments
USING (dept_id);
この USING句も,
結論としては,
バックナンバー
SQLアタマアカデミー
- 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (5)集合指向と手続き型
- 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (4)OLAP関数と集約関数を組み合わせる
- 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (3)OLAP専用関数
- 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (2)OLAP関数の基本構文
- 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (1)OLAP関数とは何か
- 第10回 結合大全 (5)非等値結合
- 第10回 結合大全 (4)自己結合
- 第10回 結合大全 (3)外部結合
- 第10回 結合大全 (2)内部結合
- 第10回 結合大全 (1)クロス結合