Çoklu CTE
- SQL kursu
- İleri seviye
- Ders 3/81
- 4 dk
Birden çok CTE'yi aynı sorguda kullanmayı öğrenirsin.
Çoklu CTE
Birden çok CTE'yi virgülle ayırıp tanımlayabilirsin. Her biri diğerini kullanabilir.
WITH active AS (
SELECT * FROM customers WHERE status = 'active'
),
big AS (
SELECT * FROM orders WHERE amount > 100
)
SELECT a.name, b.amount
FROM active a
JOIN big b ON a.id = b.customer_id;Bu sorgu iki CTE tanımlayıp birleştirir.
WITH ile active adında geçici bir sonuç kümesi (CTE) tanımlanır; ardından gelen sorgu onu bir tablo gibi kullanır. active a kaynağından a.name, b.amount seçilir. big b tablosu a.id = b.customer_id koşuluyla yalnızca eşleşen satırlarıyla birleştirilir.
Çoklu CTE — ayrıntı
Çoklu CTE'de her biri bir öncekini kullanabilir. Zincirleme sorgu yazmayı sağlar.
Örneğin önce aktif müşterileri, sonra onların büyük siparişlerini, en son da şehir bazında toplamları ayrı CTE'lerde hesaplayıp adım adım ilerleyebilirsin.
Uygulama Çoklu CTE
active ve big adında iki CTE tanımla ve birleştir.
Başlangıç kodu
-- çoklu CTE
WITHÖrnek çözüm
WITH active AS (
SELECT * FROM customers WHERE status = 'active'
),
big AS (
SELECT * FROM orders WHERE amount > 100
)
SELECT a.name, b.amount
FROM active a
JOIN big b ON a.id = b.customer_id;Beklenen çıktı
name amount Ayşe 250
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Çoklu CTE: kavramları eşleştir
| Kavram | Anlamı |
|---|---|
çoklu CTE |
virgül |
zincirleme |
sıralı |
başvuru |
kullanım |
okunabilir |
temiz |
2 İkinci CTE ekle
WITH active AS (
SELECT * FROM customers WHERE status = 'active'
)____
big AS (
SELECT * FROM orders WHERE amount > 100
)
SELECT * FROM big;
WITH active AS (
SELECT * FROM customers WHERE status = 'active'
),
big AS (
SELECT * FROM orders WHERE amount > 100
)
SELECT * FROM big;
Açıklama: Birden çok CTE tek bir WITH altında virgülle ayrılarak yazılır; WITH ikinci kez tekrarlanmaz.
3 Çoklu CTE nasıl ayrılır?
- Noktalı virgülle
- AND ile
- Virgülle Doğru cevap
- UNION ile
Açıklama: Çoklu CTE virgülle ayrılır.