CodeBlanks Logo Icon CodeBlanks

Hiyerarşi sorgu

Üst-alt ilişkisini recursive CTE ile gez

Hiyerarşi sorgu

Recursive CTE ile yönetici-çalışan hiyerarşisini sorgularsın. Her kişi bir üst kişiye bağlıdır.

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;

Bu sorgu organizasyon ağacını çıkarır.

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.

Hiyerarşi sorgu — ayrıntı

Anchor en üst yöneticiyi, recursive her ast seviyesini ekler. level derinliği gösterir.

Anchor'da WHERE manager_id IS NULL ile yöneticisi olmayan kişi seçilir; recursive kısımda çalışanlar, yöneticisi bir önceki seviyede bulunanlarla JOIN edilir.

Uygulama Hiyerarşi sorgu

Bir organizasyon hiyerarşisi sorgusu yaz: yöneticisiz kişiyi anchor, astları recursive ekle.

Başlangıç kodu

query.sql
-- hiyerarşi sorgu
WITH RECURSIVE org AS (
  SELECT id, name, manager_id, 1 AS level

Örnek çözüm

query.sql
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;

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 Hiyerarşi sorgu: kavramları eşleştir

Kavram Anlamı
hiyerarşi ağaç
yönetici üst
ast alt
level seviye

2 level ekle

Soru
  SELECT id, name, manager_id, 1 AS ____
Cevap
  SELECT id, name, manager_id, 1 AS level

Açıklama: Başlangıç (anchor) sorgusunda level 1 olarak başlar; her özyinelemede bir artırılır.

3 Hiyerarşi sorguda anchor ne seçer?

  • En üst kişi Doğru cevap
  • Tümü
  • En alt kişi
  • Yaprakları

Açıklama: Anchor en üst kişiyi seçer.

İleri seviye bölümündeki tüm dersler