SELF JOINとは何ですか?

**重複の可能性があります。 sql: 自己結合の説明

ソリューション

テーブルがそれ自身のデータを参照する場合、自己結合を使用します。

例えば、Employee テーブルに、現在の従業員の上司を指す SupervisorID カラムがあるとします。

このデータをクエリし、1行で2人分の情報を取得するには、以下のように自己結合します:

select e1.EmployeeID, 
    e1.FirstName, 
    e1.LastName,
    e1.SupervisorID, 
    e2.FirstName as SupervisorFirstName, 
    e2.LastName as SupervisorLastName
from Employee e1
left outer join Employee e2 on e1.SupervisorID = e2.EmployeeID
解説 (5)

まあ、1つの古典的な例は、従業員とその直属のマネージャーのリストを取得したい場所です。

select e.employee as employee, b.employee as boss
from emptable e, emptable b
where e.manager_id = b.empolyee_id
order by 1

これは基本的に、同じテーブルに格納されている行間に関係がある場所で使用されます。

-従業員。 -マルチレベルのマーケティング。 -機械部品。

等々。..

解説 (3)

自己結合とは、単純にテーブルとそれ自身を結合することです。SELF JOIN`キーワードはなく、通常の結合を書くだけです。1つ注意しなければならないのは、自己結合を行う場合、テーブルにエイリアスを使用する必要があるということです。

親子関係など、同じテーブルの行のペアを関連付けたい場合に便利です。以下のクエリは、カテゴリ 'Kitchen'の直近のサブカテゴリの名前をすべて返します。

SELECT T2.name
FROM category T1
JOIN category T2
ON T2.parent = T1.id
WHERE T1.name = 'Kitchen'
解説 (2)

SQLセルフジョインは、テーブルをそれ自体に結合するために使用される通常の結合です。

例:

Select *
FROM Table t1, Table t2
WHERE t1.Id = t2.ID
解説 (1)

例えば、manageridが同じテーブルのemployeeidの外部キーである従業員テーブルなどです。

SELECT E.name, ME.name AS manager
FROM dbo.Employees E
LEFT JOIN dbo.Employees ME
ON ME.employeeid = E.managerid
解説 (1)