Çalışanlar ve Yöneticiler
Klasik bir hiyerarşi örneği.
Çalışanlar ve Yöneticiler, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.
Kendi Kendine JOIN Nedir
Kendi kendine JOIN, bir tablonun yine kendisiyle birleştirilmesidir. Bu alışılmadık görünebilir; ancak bir tablodaki satırların aynı tablodaki diğer satırlarla ilişkisi olduğunda son derece kullanışlıdır.
Klasik örnek, her çalışanın bir yöneticisinin bulunabildiği ve bu yöneticinin de aynı tabloda kayıtlı başka bir çalışan olduğu çalışanlar tablosudur.
Çalışanlar Tablosu
Basit bir employees tablosu oluşturalım. Her çalışanın bir id, bir name ve aynı tablodaki başka bir satırı gösteren bir manager_id değeri vardır.
manager_id değeri NULL olduğunda çalışanın yöneticisi yoktur; çalışan hiyerarşinin en üstündedir (örneğin CEO).
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
manager_id INT REFERENCES employees(id)
);Örnek Verileri Ekleme
Tabloyu küçük bir şirket hiyerarşisiyle dolduralım. Alice CEO'dur ve yöneticisi yoktur. Bob ile Carol doğrudan Alice'e bağlıdır. Dave ve Eve ise Bob'a bağlıdır.
INSERT INTO employees (id, name, manager_id) VALUES
(1, 'Alice', NULL),
(2, 'Bob', 1),
(3, 'Carol', 1),
(4, 'Dave', 2),
(5, 'Eve', 2),
(6, 'Frank', 3);JOIN Olmadan Sorgulama
Tüm satırları yalnızca seçersek yöneticilerin adlarını değil, ham manager_id sayılarını görürüz. Bu görünümün okunması zordur ve son kullanıcılar için kullanışlı değildir.
SELECT id, name, manager_id
FROM employees;Kendi Kendine JOIN Yazma
Yöneticinin adını her çalışanın yanında göstermek için employees tablosunu yine kendisiyle birleştiririz. Her kopyaya farklı bir diğer ad veririz: çalışan için e, yönetici için m.
JOIN koşulu, çalışanın manager_id değerini yöneticinin id değeriyle ilişkilendirir.
SELECT
e.name AS employee,
m.name AS manager
FROM employees e
JOIN employees m ON e.manager_id = m.id;Yöneticisi Olmayan Çalışanları Dahil Etme
Yukarıdaki INNER JOIN, manager_id değeri NULL olduğu için Alice'i gizler; sağ tarafta eşleşen bir satır yoktur. En üst düzey çalışan da dahil olmak üzere herkesi dahil etmek için LEFT JOIN kullanın.
Alice, yönetici sütununda NULL değeriyle görünür.
SELECT
e.name AS employee,
m.name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id;Okunabilirlik İçin COALESCE Kullanma
Yönetici sütunundaki NULL değeri kafa karıştırıcı olabilir. NULL değerini 'Yönetici yok' gibi okunabilir bir etiketle değiştirmek için COALESCE kullanabilir, böylece raporların çıktısını daha anlaşılır hâle getirebiliriz.
SELECT
e.name AS employee,
COALESCE(m.name, 'No Manager') AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id
ORDER BY manager, employee;Doğrudan Bağlı Çalışanları Bulma
Sorguyu, belirli bir yöneticiye kimler bağlı? sorusunu yanıtlayacak şekilde değiştirebiliriz. Buna doğrudan bağlı çalışanları bulma denir. Burada doğrudan Alice'e bağlı tüm çalışanları buluyoruz (id = 1).
SELECT e.name AS direct_report
FROM employees e
WHERE e.manager_id = 1;Yönetici Başına Bağlı Çalışanları Sayma
Kendi kendine JOIN işlemini GROUP BY ve COUNT ile birleştirerek her yöneticinin doğrudan kendisine bağlı kaç çalışanı olduğunu görebiliriz. Bu, iş yükü analizi için kullanışlıdır.
SELECT
m.name AS manager,
COUNT(e.id) AS direct_reports
FROM employees e
JOIN employees m ON e.manager_id = m.id
GROUP BY m.name
ORDER BY direct_reports DESC;İki Düzey Derinlik
Hiyerarşinin iki düzeyini aynı anda görmek için — çalışanı, yöneticisini ve yöneticisinin yöneticisini — tabloyu üçüncü kez birleştirebiliriz. Her JOIN, hiyerarşiye bir düzey daha ekler.
SELECT
e.name AS employee,
m.name AS manager,
gm.name AS grand_manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id
LEFT JOIN employees gm ON m.manager_id = gm.id;Kendi Kendine JOIN İşlemlerinin Sınırları
Kendi kendine JOIN işlemleri sabit ve sığ hiyerarşilerde (1–3 düzey) iyi çalışır. Derinlik bilinmiyorsa veya sınırsızsa — örneğin 10 düzey derinliğe ulaşabilen bir şirket organizasyon şemasında — bunun yerine özyinelemeli CTE'lere ihtiyacınız vardır.
Çalışan-yönetici sorgularının çoğunda bu derste ele alınan kendi kendine JOIN yaklaşımı doğru araçtır.
Kısa Sınama
Kendi kendine JOIN işlemleri ve çalışan-yönetici hiyerarşisi konusundaki anlayışınızı sınayın.
Ders Özeti
Bu derste, tek bir tabloda saklanan klasik çalışan-yönetici hiyerarşisini modellemek ve sorgulamak için kendi kendine JOIN kullanmayı öğrendiniz.
Temel çıkarımlar:
- Kendi kendine JOIN, iki farklı diğer ad kullanarak bir tabloyu yine kendisiyle birleştirir.
- JOIN koşulu, aynı tablodaki
manager_iddeğeriniiddeğerine bağlar. - Yalnızca yöneticisi olan çalışanları görmek için INNER JOIN, herkesi dahil etmek için LEFT JOIN kullanın.
- COALESCE, NULL yönetici değerlerini okunabilir bir etiketle değiştirebilir.
- Sınırsız derinlikteki hiyerarşiler için özyinelemeli CTE'leri değerlendirin.
Sıkça Sorulan Sorular
“Çalışanlar ve Yöneticiler” dersi ücretsiz mi?
Evet — “Çalışanlar ve Yöneticiler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.
“Çalışanlar ve Yöneticiler” dersinde ne öğreneceğim?
Klasik bir hiyerarşi örneği. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
SQL Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Çalışanlar ve Yöneticiler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Kendi Kendine Birleştirme Nedir
- Çalışanlar ve Yöneticiler
- Aynı Tablodaki Satırları Karşılaştırma
- Kendi Kendine Birleştirmelerin Sınırları