Hiyerarşi raporu
- SQL kursu
- İleri seviye
- Ders 78/81
- 6 dk
Recursive CTE ile ast-üst raporu yaz
Hiyerarşi raporu
Bu meydan okumada recursive CTE ile organizasyon hiyerarşisi çıkaracaksın.
WITH RECURSIVE org AS (
SELECT id, name, manager_id, 1 AS level
FROM employees WHERE manager_id IS NULL
UNION ALL
SELECT e.id, e.name, e.manager_id, o.level + 1
FROM employees e JOIN org o ON e.manager_id = o.id
)
SELECT * FROM org ORDER BY level;Örnekte: organizasyon ağacı.
WITH RECURSIVE ile org adında kendine başvuran geçici bir sonuç kümesi (CTE) tanımlanır; ardından gelen sorgu onu bir tablo gibi kullanır. org kaynağından tüm sütunlar seçilir. Sonuç level değerine göre küçükten büyüğe sıralanır.
Uygulama Hiyerarşi raporu
Recursive CTE ile organizasyon hiyerarşisini çıkar: anchor en üst, recursive astları ekler.
Başlangıç kodu
-- hiyerarşi raporu için recursive CTE yaz
-- employees tablosunu kullanÖrnek çözüm
WITH RECURSIVE org AS (
SELECT id, name, manager_id, 1 AS level
FROM employees WHERE manager_id IS NULL
UNION ALL
SELECT e.id, e.name, e.manager_id, o.level + 1
FROM employees e JOIN org o ON e.manager_id = o.id
)
SELECT * FROM org ORDER BY level;Beklenen çıktı
id name level 1 Fatma 1 2 Ayşe 2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Recursive CTE'de ne birleşir?
- UNION ALL Doğru cevap
- INTERSECT
- JOIN
- EXCEPT
Açıklama: Recursive CTE UNION ALL ile birleşir.
2 Hiyerarşi raporu: kavramları eşleştir
| Kavram | Anlamı |
|---|---|
recursive |
özyineli |
anchor |
temel |
UNION ALL |
birleştir |
level |
seviye |