EMZETT.
Giriş yap

SQL JOIN’leri: tabloları birbirine bağlama

Kısaca: Bir JOIN, iki tablodaki satırları bir koşula göre, çoğunlukla eşit anahtar değerlerine göre birleştirir. Böylece ayrı saklanan veriler birlikte sorgulanabilir.

Biraz daha ayrıntılı: Örnek: musteri(id, ad) ve siparis(id, musteri_id, tutar) tabloları. ON siparis.musteri_id = musteri.id ile siparişler müşteri adlarıyla ilişkilendirilir.

Ayrıntılı

  • INNER JOIN: Yalnızca iki tarafta da eşi olan satırlar. Siparişi olmayan müşteriler eksik kalır.
  • LEFT JOIN: Sol tablonun tüm satırları, eşi olmasa bile. Sağdaki eksik değerler NULL’dır. WHERE siparis.id IS NULL ile siparişi olmayan müşteriler bulunur.
  • RIGHT JOIN: Ayna görüntüsü. Genellikle tabloları değiştirilmiş bir LEFT JOIN olarak yazılır.
  • FULL OUTER JOIN: İki tarafın tüm satırları, eksik eşler için NULL ile.
  • CROSS JOIN: Her satır her satırla (Kartezyen çarpım). Dikkat: n × m satır.
  • SELF JOIN: Bir tabloyu kendisiyle birleştirme; örneğin çalışanlar ve yöneticileri.
  • Tuzaklar: Koşul yoksa Kartezyen çarpım oluşur. 1:n ilişkilerde satırlar çoğalır ve toplamlar yanlış olur. LEFT JOIN’de sağ tabloya ait süzme koşulu WHERE’e değil ON’a girer.
  • Hız: Yabancı anahtar sütunlarını indeksle (SQL indeksi).

Ayrıca bak: SQL, EXPLAIN ile sorguları iyileştirme