SQL JOIN Türleri:
Görerek Öğren
INNER, LEFT, RIGHT, FULL OUTER ve CROSS JOIN — her tablo satırının nereye gittiğini, hangi satırların NULL döndüğünü renklerle izle. JOIN tipi değiştikçe sonuç tablosu anında güncelleniyor.
musteriler.id = birincil anahtar🔗 siparisler.musteri_id = yabancı anahtar⚠ sipariş_id=105 — musteri_id=6 yok! (tutarsız veri)SELECT m.id, m.isim, m.sehir,
s.siparis_id, s.urun, s.tutar
FROM musteriler m
INNER JOIN siparisler s
ON m.id = s.musteri_id;ON koşulu nasıl çalışır? +
ON m.id = s.musteri_id ifadesi veritabanına "bu iki kolonu karşılaştır, eşit olanları eşleştir" der. Eşitlik kontrolü zorunlu değil — ON m.id < s.musteri_id gibi aralık koşulları da yazılabilir (çok nadir).
WHERE vs JOIN — fark ne? +
JOIN, tabloları mantıksal olarak birleştirir. WHERE, bu birleşimden satır filtreler. LEFT JOIN yapıp WHERE s.id IS NOT NULL yazarsan sonuç INNER JOIN'e eşdeğer olur — ama bu anti-pattern, kafa karıştırır.
Birden fazla JOIN zinciri nasıl yazılır? +
FROM a JOIN b ON a.id=b.a_id JOIN c ON b.id=c.b_id şeklinde zincirlenir. Veritabanı optimizer sırayı kendisi belirler. İndeks yoksa büyük tablolarda yavaşlar.
Aynı tabloyu JOIN'leyebilir miyim? (Self JOIN) +
Evet! Örn: çalışan-yönetici ilişkisi tek tabloda tutuluyorsa FROM calisanlar c JOIN calisanlar m ON c.yonetici_id = m.id yazılır. Alias (c, m) zorunludur.
NULL olan satırları nasıl filtrelerim? +
LEFT JOIN yapıp yalnızca eşleşmeyenleri görmek için WHERE s.siparis_id IS NULL ekle. "Hiç sipariş vermemiş müşteriler" sorgusu bu şekilde yazılır. NULL = NULL FALSE döner, IS NULL kullanmak zorundasın.