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_id | employee_name | manager_id |
| 1 | Minke | 2 |
| 2 | Temur | 3 |
| 3 | Tatjana | 4 |
| 4 | Marinela |
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_idAynı 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ı |
|---|---|---|
| 1 | Minke | Temur |
| 2 | Temur | Tatjana |
| 3 | Tatjana | Marinela |
Görev
OrtaMevcut 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
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
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns