CodeBlanks Logo Icon CodeBlanks

Çoklu CTE

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

query.sql
-- çoklu CTE
WITH

Örnek çözüm

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

Soru
WITH active AS (
  SELECT * FROM customers WHERE status = 'active'
)____
big AS (
  SELECT * FROM orders WHERE amount > 100
)
SELECT * FROM big;
Cevap
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.

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