Self Join Nedir? — SQL Server
Bir tablonun kendisiyle JOIN işlemine tutulmasına Self Join denir. Hiyerarşik verileri sorgulamak veya aynı tablodaki satırları karşılaştırmak için kullanışlıdır.
Self Join; inner join veya left join komutlarını kullanır. Self Join kullanan sorgu aynı tabloya başvurduğundan , sorgu içinde aynı tabloya farklı adlar atamak için alias kullanılır.
Alias kullanılmadan bir sorguda aynı tabloya birden fazla başvuru yapılmasının hataya yol açabilir.
- Hiyerarşik verileri sorgulamak için Self Join kullanma
Yöneticilerin hangi personellerden sorumlu olduğunu öğrenmek için, aşağıdaki sorguda gösterildiği gibi Self Joini kullanabiliriz.
SELECT
e.first_name + ‘ ‘ + e.last_name employee,
m.first_name + ‘ ‘ + m.last_name manager
FROM
sales.staffs e
LEFT JOIN sales.staffs m ON m.staff_id = e.manager_id
ORDER BY
manager;
2. Bir tablodaki satırları karşılaştırmak için Self Join kullanma
Aynı şehirde bulunan müşterileri bulmak için aşağıda yer alan Self Join sorgusunu kullanabiliriz.
SELECT
c1.city,
c1.first_name + ‘ ‘ + c1.last_name customer_1,
c2.first_name + ‘ ‘ + c2.last_name customer_2
FROM
sales.customers c1
INNER JOIN sales.customers c2 ON c1.customer_id > c2.customer_id
AND c1.city = c2.city
ORDER BY
city,
customer_1,
customer_2;