セルフジョインとは何ですか?いつ使用しますか?自己結合がわからないので、例を挙げた素人の説明がいいと思います。
5 に答える
テーブルがデータ自体を参照する場合は、自己結合を使用します。
たとえば、EmployeeテーブルSupervisorIDには、現在の従業員の上司である従業員を指す列がある場合があります。
データをクエリして、1 行で両方の人の情報を取得するには、次のように自己結合できます。
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
典型的な例の 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
基本的に、同じテーブルに格納されている行間に関係がある場合に使用されます。
- 従業員。
- 連鎖販売取引。
- 機材。
等々...
自己結合は、単にテーブルをそれ自体で結合する場合です。キーワードはありませんSELF JOIN。結合に含まれる両方のテーブルが同じテーブルである通常の結合を記述するだけです。注意すべきことの 1 つは、自己結合する場合、テーブルのエイリアスを使用する必要があることです。そうしないと、テーブル名があいまいになります。
親子関係など、同じテーブルの行のペアを関連付ける場合に便利です。次のクエリは、カテゴリ「キッチン」の直接のすべてのサブカテゴリの名前を返します。
SELECT T2.name
FROM category T1
JOIN category T2
ON T2.parent = T1.id
WHERE T1.name = 'Kitchen'
SQL 自己結合は、テーブルをそれ自体に結合するために使用される通常の結合です。
例:
Select *
FROM Table t1, Table t2
WHERE t1.Id = t2.ID
それ自体を「参照」するテーブルで自己結合を使用します。たとえば、manageid が同じテーブルの employeeid への外部キーである従業員のテーブルです。
例:
SELECT E.name, ME.name AS manager
FROM dbo.Employees E
LEFT JOIN dbo.Employees ME
ON ME.employeeid = E.managerid