Menu
Coddy logo textTech

Self join

Coddy'nin SQL Journey'sinin Temeller bölümünün bir parçası — ders 46 / 72.

Self-join'ler farklı birleştirme türleridir. Şu ana kadar birden fazla tablo birleştirmesinden bahsettik, ancak self-join'ler aynı tabloya birleştirilir. Klasik bir örnek, bir employees tablosu olabilir.

employee_idemployee_namemanager_id
1Minke2
2Temur3
3Tatjana4
4Marinela 

En üst yönetici hariç her çalışanın bir yöneticisi vardır ve her yönetici aynı zamanda bir çalışandır.

Sorun: Her bir çalışan için yöneticinin adını bilmek istiyoruz.

SELECT e2.employee_id, e2.employee_name, e1.employee_name as manager_name
FROM employees as e1
JOIN employees as e2 ON e1.employee_id = e2.manager_id

Aynı tabloyu, birinde e1 ve ikinci seferinde e2 olarak adlandırarak kendi arasında birleştiriyoruz. Birleştirme, employee_id ve manager_id alanları arasındadır.

Sonuç:

çalışan_idçalışan_adıyönetici_adı
1MinkeTemur
2TemurTatjana
3TatjanaMarinela
challenge icon

Görev

Orta

Mevcut tablolar ve sütunlar:

  • <strong>friends</strong>: <strong>id</strong>, <strong>name</strong>, <strong>friend_id</strong>

Karşılıklı arkadaş olan arkadaş çiftlerini bulun (karşılıklı arkadaşlık, A kişisinin friend_id değeri B kişisini VE B kişisinin friend_id değeri A kişisini gösterdiğinde oluşur). Her iki arkadaşın adını tek bir satırda görüntüleyin. Sütunları friend1 ve friend2 olarak adlandırın.

Not: Yinelenen çiftleri dahil etmemek için WHERE yan tümcesine friend1.id < friend2.id kriterini ekleyin. 

Kopya kağıdı

Self-join'ler (kendi kendine birleştirmeler), tablo takma adlarını kullanarak bir tabloyu kendisine bağlamanıza olanak tanır. Bu, aynı tablo içindeki satırları karşılaştırmanız veya aynı tablodaki kayıtlar arasında ilişkiler kurmanız gerektiğinde kullanışlıdır.

Temel self-join sözdizimi:

SELECT columns
FROM table_name AS alias1
JOIN table_name AS alias2 ON alias1.column = alias2.column

Çalışanlar ve yöneticiler ile ilgili örnek:

SELECT e2.employee_id, e2.employee_name, e1.employee_name as manager_name
FROM employees as e1
JOIN employees as e2 ON e1.employee_id = e2.manager_id

Önemli noktalar:

  • Aynı tablo için farklı takma adlar (örneğin, e1, e2) kullanın
  • Birleştirme (join) koşulu, takma adlar arasındaki ilgili alanları birbirine bağlar
  • Çalışan-yönetici ilişkileri gibi hiyerarşik veriler için kullanışlıdır

Kendin dene

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler