0Pricing
SQL Academy · Ders

Lateral Birleştirmeler (LATERAL JOIN)

Bir alt sorgunun içinden önceki FROM öğesine LATERAL ile başvurun — SQL'deki satır başına işlev çağrısına denktir.

Lateral Birleştirmeler (LATERAL JOIN), 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.

LATERAL Nedir

LATERAL, FROM yan tümcesindeki bir alt SELECT'in FROM listesindeki daha önceki öğelerden sütunlara başvurmasını sağlar. LATERAL olmadan FROM öğeleri birbirini göremez.

Zihinsel Model

LATERAL, "sol taraftaki her satır için bu sorguyu değerlendir" anlamına gelir. İlişkili bir alt sorgu gibidir; ancak FROM yan tümcesinde yer alır ve birden çok satır ile sütun döndürür.

Kullanıcı Başına İlk 3 Sipariş

Klasik LATERAL kullanımı:

SELECT u.id, u.email, o.id AS order_id, o.total
FROM users u
JOIN LATERAL (
  SELECT id, total FROM orders
  WHERE user_id = u.id
  ORDER BY total DESC
  LIMIT 3
) AS o ON true;

SELECT İçinde Alt Sorgu Neden Kullanılmaz

SELECT içindeki tek değerli bir alt sorgu bir değer döndürür. LATERAL ise her dış satır için birden çok satır ve sütun döndürür.

İşlevlerle LATERAL

Küme döndüren işlevler varsayılan olarak LATERAL benzeri davranır:

SELECT t.id, unnest_tag
FROM posts t
CROSS JOIN LATERAL unnest(t.tags) AS unnest_tag;

-- Equivalent (set-returning functions are implicit LATERAL):
SELECT t.id, unnest_tag
FROM posts t, unnest(t.tags) AS unnest_tag;

LATERAL ve Pencere İşlevleri

"Grup başına en yüksek N değer" için hem LATERAL hem de ROW_NUMBER çalışır. ROW_NUMBER genellikle daha verimlidir çünkü tabloyu bir kez tarar; LATERAL ise her dış satır için yeniden sorgular.

-- ROW_NUMBER alternative:
WITH ranked AS (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY total DESC) AS rn
  FROM orders
)
SELECT u.email, r.id, r.total
FROM users u
JOIN ranked r ON r.user_id = u.id
WHERE r.rn <= 3;

Toplama İşlevleriyle LATERAL

Satır başına önceden hesaplanan değerler:

SELECT u.email, stats.last_order_at, stats.total_orders
FROM users u
LEFT JOIN LATERAL (
  SELECT MAX(created_at) AS last_order_at,
         COUNT(*)        AS total_orders
  FROM orders WHERE user_id = u.id
) AS stats ON true;

ON true

LATERAL, JOIN için bir ON yan tümcesi gerektirir — ancak birleşim koşulu alt sorgunun içinde bulunduğundan dış ON değeri true olur.

CROSS JOIN LATERAL ve LEFT JOIN LATERAL

  • CROSS JOIN LATERAL — iç sorgu hiç satır döndürmezse dış satır çıkarılır
  • LEFT JOIN LATERAL ... ON true — dış satır NULL sütunlarla korunur

Uzaklık Sorguları için LATERAL

Her kullanıcı için en yakın mağaza:

SELECT u.id, s.name, s.distance
FROM users u
CROSS JOIN LATERAL (
  SELECT name, location <-> u.location AS distance
  FROM stores
  ORDER BY location <-> u.location
  LIMIT 1
) AS s;

LATERAL, SQL Standardıdır

SQL:1999 ile standartlaştırılmıştır. PostgreSQL bunu LATERAL olarak uygular; SQL Server ise CROSS APPLY / OUTER APPLY kullanır.

Performans

LATERAL, her dış satır için ayrı ayrı çalıştırılır. İç tabloda uygun bir dizin varsa her yineleme hızlıdır. Dizin yoksa büyük ölçeklerde yavaş olabilir.

Özet

LATERAL = "dış satırı gören FROM alt sorgusu".

  • Grup başına en yüksek N değer
  • Satır başına ön hesaplama
  • Küme döndüren işlevler
  • Dış birleşimler için LEFT JOIN ... ON true ile birlikte kullanın

Hızlı Kontrol

LATERAL, normal bir FROM alt sorgusunun yapamadığı neyi mümkün kılar?

Sıkça Sorulan Sorular

“Lateral Birleştirmeler (LATERAL JOIN)” dersi ücretsiz mi?

Evet — “Lateral Birleştirmeler (LATERAL JOIN)” 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.

“Lateral Birleştirmeler (LATERAL JOIN)” dersinde ne öğreneceğim?

Bir alt sorgunun içinden önceki FROM öğesine LATERAL ile başvurun — SQL'deki satır başına işlev çağrısına denktir. 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.

“Lateral Birleştirmeler (LATERAL JOIN)” 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

  1. Cross Join ve Kartezyen Çarpımlar
  2. Lateral Birleştirmeler (LATERAL JOIN)
  3. Anti-Birleştirmeler ve Yarı-Birleştirmeler (NOT EXISTS)
  4. Çok Tablolu Birleştirmelerde Performans Ayarı
← SQL Academy Sayfasına Dön