SQL 自己結合のサンプル

SQLの自己結合のサンプルです。

自己結合

select 項目
from  テーブルA  as a
  inner join  テーブルA as b
on 結合する条件
  • テーブルに別名をつけて同じテーブル同士を結合します。

 

自己結合の使用例

次のテーブルがあるとします。

employeeテーブル
id name boss
1 suzuki NULL
2 tanaka 1
3 kobayashi 2

社員とその社員の上司を表すテーブルです。
項目「boss」がその社員の上司です。

suzukiの上司は、項目「boss」の値がnullのためいません。
tanakaの上司は、項目「boss」の値が1なので「id」が1のsuzukiです。
kobayashiの上司は、項目「boss」の値が2なので「id」が2のtanakaです。

 

SQL

上記テーブルに対して自己結合を使用してnameとその上司のデータを抽出します。

select a.id,a.name,b.name as boss
from employee as a
inner join employee as b
on a.boss = b.id;

2,3行目は、同じテーブルからそれぞれaとbという別名を付けています。
4行目の「a.boss = b.id」が結合条件です。

 

結果

結果は、以下のとおりです。

id name boss
2 tanaka suzuki
3 kobayashi tanaka

結合条件に一致したデータのみが表示されます。
項目「id」1の"suzuki"の行は表示されません。

関連の記事

SQL INSERT文でテーブルの行を追加するサンプル
SQL UPDATE文でテーブルの行を更新するサンプル
SQL distinct 重複行を表示しないサンプル
SQL 複数の行をまとめる(集約関数/group by/having)
SQL LEFT JOIN 外部結合のサンプル
SQL 副問合せのサンプル(サブクエリ)
SQL INNER JOIN 内部結合のサンプル
SQL UNIONとUNION ALLのサンプル(結合して抽出)

△上に戻る