SQL 自己結合のサンプル

SQLの自己結合についてです。

目次

自己結合

ひとつのテーブルに別名をつけ、その別名を使用して同じテーブル同士を結合します。

テストデータ

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

syainテーブル
id name jyoushi
1 suzuki NULL
2 tanaka 1
3 kobayashi 2

社員とその社員の上司を表すテーブルです。
項目「jyoushi」がその社員の上司です。
suzukiの上司は、項目「jyoushi」の値がnullのためいません。
tanakaの上司は、項目「jyoushi」の値が1なので「id」が1のsuzukiです。
kobayashiの上司は、項目「jyoushi」の値が2なので「id」が2のtanakaです。

SQL文

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

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

select a.id,a.name,b.name as jyoushi
from syain as a
inner join syain as b
on a.jyoushi = b.id;

 

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

実行結果
id name jyoushi
2 tanaka suzuki
3 kobayashi tanaka

関連の記事

SQL INSERT文のサンプル
SQL UPDATE文とDELETE文のサンプル
SQL 重複行を表示しないサンプル(distinct)
SQL 複数の行をまとめる(集約関数/group by/having)
SQL 外部結合のサンプル(left outer join/right outer join)
SQL 副問合せのサンプル(サブクエリ)
SQL 内部結合のサンプル(inner join)
SQL UNIONのサンプル

△上に戻る