0Pricing
SQL Academy · Ders

Cross Join ve Kartezyen Çarpımlar

Kombinatoryal eşleştirmeler için CROSS JOIN'i bilinçli olarak kullanın ve eksik birleştirme anahtarlarından kaynaklanan kazara Kartezyen patlamalardan kaçının.

Cross Join ve Kartezyen Çarpımlar, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 1. 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.

CROSS JOIN Nedir

CROSS JOIN satırların tüm birleşimlerini üretir: m × n çıktı satırı. ON yan tümcesi yoktur.

SELECT * FROM a CROSS JOIN b;

-- Equivalent:
SELECT * FROM a, b;        -- comma join, no condition

Kazara Kartezyen Çarpımlar

Klasik hata şudur: JOIN koşulunu unutursunuz ve A tablosundaki her satır B tablosundaki her satırla eşleştirilir.

SELECT u.email, o.id
FROM users u, orders o;     -- missing WHERE u.id = o.user_id !
-- m users × n orders rows — millions!

Amaçlanan Kullanım Alanları

CROSS JOIN, gerçekten tüm çiftleri istediğinizde kullanışlıdır:

  • Boş kova raporları için kategori × zaman aralıkları birleşimleri
  • Sınama verileri: her kullanıcı × her ürün
  • Takvimler: her mağaza × her tarih

Takvim × Mağazalar Örneği

Her mağaza için sıfır günleri de doldurun:

SELECT d.day, s.id, COALESCE(SUM(o.total), 0) AS revenue
FROM generate_series(CURRENT_DATE - 30, CURRENT_DATE, '1 day') AS d(day)
CROSS JOIN stores s
LEFT JOIN orders o ON o.store_id = s.id
                  AND date_trunc('day', o.created_at) = d.day
GROUP BY d.day, s.id
ORDER BY d.day, s.id;

Kartezyen Çarpımlar ve EXPLAIN

İstenmeyen bir kartezyen çarpım, EXPLAIN ANALYZE çıktısında çok büyük bir satır sayısı olarak görünür:

EXPLAIN ANALYZE
SELECT u.email, o.id FROM users u, orders o;
-- Nested Loop  (rows=10000000)  ← warning sign

LATERAL: Koşullu CROSS JOIN

LATERAL JOIN, sağ tarafın sol tarafa başvurabildiği bir CROSS JOIN gibidir — bunu bir sonraki derste ele alacağız.

Permütasyonlar ve Kombinasyonlar

Yinelenenleri olmayan (A,B) çiftleri için ON içine bir karşılaştırma ekleyin:

SELECT a.id, b.id
FROM products a
JOIN products b ON a.id < b.id;
-- All unique pairs of products, no (A,A), no (B,A) duplicates of (A,B)

VALUES ile CROSS JOIN

Küçük bir kümeyi satır içine alın:

SELECT u.email, c.code
FROM users u
CROSS JOIN (VALUES ('EUR'), ('USD'), ('GBP')) AS c(code);

Virgüllü JOIN Sözdiziminden Kaçınma

Örtük virgüllü JOIN (FROM a, b) geçerlidir ancak amacı gizler. Açık CROSS JOIN kullanmayı tercih edin:

-- Don't (looks like a typo):
FROM users, orders

-- Do:
FROM users CROSS JOIN orders

Performans

CROSS JOIN'in kendisi ucuzdur — değerlendirilecek bir koşul yoktur. Maliyet, çıktı satırı sayısından kaynaklanır: 10k × 10k = 100M satır.

Özet

CROSS JOIN = tüm çiftler.

  • Birleşimler için bilinçli olarak kullanın
  • Kazara oluşan kartezyen çarpımlara dikkat edin (eksik WHERE)
  • Boşluk dolduran raporlar için generate_series ile birleştirin

Hızlı Kontrol

SELECT * FROM users u, orders o; yazdınız ve WHERE kullanmadınız. Çıktı nedir?

Sıkça Sorulan Sorular

“Cross Join ve Kartezyen Çarpımlar” dersi ücretsiz mi?

Evet — “Cross Join ve Kartezyen Çarpımlar” 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.

“Cross Join ve Kartezyen Çarpımlar” dersinde ne öğreneceğim?

Kombinatoryal eşleştirmeler için CROSS JOIN'i bilinçli olarak kullanın ve eksik birleştirme anahtarlarından kaynaklanan kazara Kartezyen patlamalardan kaçının. 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 1. dersidir.

“Cross Join ve Kartezyen Çarpımlar” 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