Menu
Coddy logo textTech

Kendine JOIN

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

Kendine birleştirmeler, farklı birleştirme türleridir. Şimdiye kadar birden çok tablo birleştirmesinden bahsettik, ancak kendine birleştirmelerde aynı tablo birleştirilir. Klasik bir örnek çalışanlar tablosu olabilir.

employee_idemployee_namemanager_id
1Minke2
2Temur3
3Tatjana4
4Marinela 

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

Sorun: Her ç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ı tablo arasında birleştirme yaparız; ancak bir seferinde ona e1, ikinci seferinde ise e2 deriz. Birleştirme, employee_id ve manager_id alanları arasındadır.

Sonuç:

employee_idemployee_namemanager_name
1MinkeTemur
2TemurTatjana
3TatjanaMarinela
challenge icon

Görev

Orta

Kullanılabilir tablolar ve sütunlar:

  • friends: id, name, friend_id

Karşılıklı arkadaş olan arkadaş çiftlerini bulun (karşılıklı arkadaşlık, A kişisinin friend_id değerinin B kişisini göstermesi VE B kişisinin friend_id değerinin A kişisini göstermesi durumunda vardır). 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 içermemesi için WHERE yan tümcesine friend1.id < friend2.id ölçütünü ekleyin 

Kendin dene

-- Tabloyu kendisine birleştir ki bir satır iki farklı kişiyi gösterebilsin
SELECT ____ AS friend1, ____ AS friend2
FROM friends f1
JOIN friends f2 ON ____
-- Yalnızca birbirini işaret eden çiftleri tut
WHERE ____ AND f1.id < f2.id;
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

Kendi başına pratik yap: SQL playground