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. 

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