133

セルフジョインとは何ですか?いつ使用しますか?自己結合がわからないので、例を挙げた素人の説明がいいと思います。

4

5 に答える 5

189

テーブルがデータ自体を参照する場合は、自己結合を使用します。

たとえば、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
于 2010-07-29T11:37:39.650 に答える
76

典型的な例の 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

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

  • 従業員。
  • 連鎖販売取引。
  • 機材。

等々...

于 2010-07-29T11:39:35.227 に答える
25

自己結合は、単にテーブルをそれ自体で結合する場合です。キーワードはありませんSELF JOIN。結合に含まれる両方のテーブルが同じテーブルである通常の結合を記述するだけです。注意すべきことの 1 つは、自己結合する場合、テーブルのエイリアスを使用する必要があることです。そうしないと、テーブル名があいまいになります。

親子関係など、同じテーブルの行のペアを関連付ける場合に便利です。次のクエリは、カテゴリ「キッチン」の直接のすべてのサブカテゴリの名前を返します。

SELECT T2.name
FROM category T1
JOIN category T2
ON T2.parent = T1.id
WHERE T1.name = 'Kitchen'
于 2010-07-29T11:38:29.650 に答える
11

SQL 自己結合は、テーブルをそれ自体に結合するために使用される通常の結合です。

例:

Select *
FROM Table t1, Table t2
WHERE t1.Id = t2.ID
于 2010-07-29T11:38:56.753 に答える
6

それ自体を「参照」するテーブルで自己結合を使用します。たとえば、manageid が同じテーブルの employeeid への外部キーである従業員のテーブルです。

例:

SELECT E.name, ME.name AS manager
FROM dbo.Employees E
LEFT JOIN dbo.Employees ME
ON ME.employeeid = E.managerid
于 2010-07-29T11:38:31.863 に答える