Apa DIRI BERGABUNG dan ketika anda akan menggunakannya?

Apa diri bergabung dan ketika anda akan menggunakannya? Saya don't memahami diri bergabung jadi orang awam penjelasan dengan contoh akan menjadi besar.

Larutan

Anda menggunakan self bergabung ketika sebuah tabel referensi data dalam dirinya sendiri.

E. g., sebuah Karyawan tabel dapat memiliki SupervisorID kolom yang menunjuk kepada karyawan yang adalah bos dari karyawan saat ini.

Untuk query data dan mendapatkan informasi untuk kedua orang dalam satu baris, anda bisa diri bergabung seperti ini:

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
Komentar (5)

Nah, salah satu contoh klasik adalah di mana anda ingin mendapatkan daftar karyawan dan manajer langsung mereka:

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

It's pada dasarnya digunakan di mana tidak ada hubungan antara baris yang disimpan dalam tabel yang sama.

  • karyawan.
  • multi-level marketing.
  • bagian-bagian mesin.

Dan sebagainya...

Komentar (3)

Self join adalah hanya ketika anda bergabung dengan sebuah meja dengan dirinya sendiri. Tidak ada DIRI BERGABUNG dengan kata kunci, anda hanya menulis biasa bergabung mana kedua tabel yang terlibat dalam bergabung adalah meja yang sama. Satu hal yang perlu diperhatikan adalah bahwa ketika anda bergabung maka perlu menggunakan alias untuk tabel jika nama tabel akan menjadi ambigu.

Hal ini berguna ketika anda ingin berhubungan pasang baris dari tabel yang sama, misalnya hubungan orangtua - anak. Berikut permintaan kembali nama-nama dari semua langsung subkategori kategori 'Dapur'.

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

SQL diri bergabung hanya normal bergabung yang digunakan untuk bergabung dengan meja untuk dirinya sendiri.

Contoh:

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

Anda'd gunakan self-join pada tabel yang "pada" untuk dirinya sendiri - misalnya sebuah tabel karyawan mana managerid adalah kunci asing untuk employeeid di meja yang sama.

Contoh:

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