SQL 速習チュートリアル

SQL Self Join

1. SQL Self Join の概要

Self Join(自己結合)とは、通常の結合(Join)と同じ仕組みですが、自分自身のテーブルと結合を行う手法を指します。

2. Self Join の構文

SELECT カラム名
FROM テーブル1 T1, テーブル1 T2
WHERE 条件;

ここで、T1T2 は、同一テーブルに対して定義された異なるテーブルエイリアス(別名)です。

3. デモ用データベース

以下は「Customers(顧客)」テーブルからの抜粋です:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico

4. SQL Self Join の実装例

以下の SQL ステートメントは、同じ都市(City)に住んでいる顧客同士をマッチングします。

SELECT A.CustomerName AS 顧客名1, B.CustomerName AS 顧客名2, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City
ORDER BY A.City;

技術解説: このクエリでは、AB という2つのエイリアスを使用して同じテーブルを参照しています。WHERE A.CustomerID <> B.CustomerID という条件を加えることで、自分自身とマッチングすることを防ぎ、異なる顧客同士が同じ都市に居住しているレコードのみを抽出しています。