SQLの自己結合のサンプルです。
目次
自己結合
| select 項目 from「テーブルA as a」 inner join 「テーブルA as b」on 結合する条件 |
- テーブルに別名をつけて同じテーブル同士を結合します。
テストデータ
次のテーブルがあるとします。
| 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文
上記テーブルに対して自己結合を使用してデータを抽出します。
select a.id,a.name,b.name as jyoushi
from syain as a
inner join syain as b
on a.jyoushi = b.id;
2,3行目は、同じテーブルからそれぞれaとbという別名を付けています。
4行目の「a.jyoushi = b.id」が結合条件です。
結果
結果は、以下のとおりです。
| id | name | jyoushi |
|---|---|---|
| 2 | tanaka | suzuki |
| 3 | kobayashi | tanaka |
結合条件に一致したデータのみが表示されます。
項目「id」1の"suzuki"の行は表示されません。
関連の記事
SQL INSERT文のサンプル
SQL UPDATE文とDELETE文のサンプル
SQL 重複行を表示しないサンプル(distinct)
SQL 複数の行をまとめる(集約関数/group by/having)
SQL 外部結合のサンプル(left outer join/right outer join)
SQL 副問合せのサンプル(サブクエリ)
SQL 内部結合のサンプル(inner join)
SQL UNIONとUNION ALLのサンプル