トップDML選択(結合) ≫ テーブルを自己結合する(再帰結合)

テーブルを自己結合する

自己結合(再帰結合)とは同じテーブル同士を結合することをいいます.一般に結合は異なるテーブルまたはビューを対象として行われますが,結合するテーブルが必ずしも異なるテーブルである必要はありません.

自己結合

複数のテーブルを扱う場合はそれぞれFROM句に使用するテーブル名を記述しますが,自己結合の場合はテーブル名が同じですので区別ができません.そこでテーブル名に別名をつけます.自己結合はいろいろな書き方ができますが,基本的な書き方は以下のとおりです.

SELECT 列名1, 列名2, ...
FROM テーブル名 [AS] 別名1 [INNER] JOIN テーブル名 [AS] 別名2
  ON 別名1.列名 = 別名2.列名
[WHERE 条件式など]

FROM句で同一のテーブルを指定し,AS句で別名をつけます.なおASは省略可能です.

SQL サンプル

例として以下の従業員マスタの自己結合を行い従業員の上司の名前を取得します.ここで上司コードは従業員の上司の従業員コードです.

従業員

従業員コード従業員名上司コード
00001チャーリー・ブラウン<NULL>
00002ペパーミント・パティ<NULL>
00003ルシール・ヴァン・ぺルト00001
00004ライナス・ヴァン・ぺルト00003
00005シュローダー00001
00006マーシー00002

SQL

SELECT 部下.従業員コード, 部下.従業員名,
    上司.従業員名 AS 上司の名前
FROM 従業員 AS 部下 JOIN 従業員 AS 上司
  ON 部下.上司コード = 上司.従業員コード
ORDER BY 部下.従業員コード

結果

従業員コード従業員名上司の名前名
00003ルシール・ヴァン・ぺルトチャーリー・ブラウン
00004ライナス・ヴァン・ぺルトルシール・ヴァン・ぺルト
00005シュローダーチャーリー・ブラウン
00006マーシーペパーミント・パティ