Merhaba, SQL yazılarına devam ediyoruz bu yazımızda join konusuna bakacağız. Bir önceki yazıyı okumadıysanız buradan ulaşabilirsiniz.
Bundan önceki yazılarımızda hep tek tablo üzerinden işlem yaptık ve konuları inceledik. SQL dilindeki en önemli konulardan biri Join konusudur. Tabloları birleştirmemize olanak sağlar.
Sorgu ile tabloları birleştirip işlem yapmamızı sağlar.
Aşağıda iki farklı tabloya ait veriler var , tek bir sorgu ile iki tablodaki verileri birleştirebiliriz.
Bir örnek ile anlamaya çalışalı, customers ve orders tablosundan tek sorgu ile verileri getirmeyi deneyelim, Bunu yaparken aynı anda iki tablo kullanacağımız için kolon isimlerinden önce tabloda adını belirtmemz gerekiyor;
SELECT customers.ID, customers.Name, orders.Name, orders.Amount
FROM customers, orders
WHERE customers.ID=orders.Customer_ID
ORDER BY customers.ID;
Burada join yapımız where ifade ile sağlanmış.
Types of Join:
Veritabanından veritabanına değişmekte olup genel olarak 3 temel join türü vardır bunlar,
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
Inner join, normal join kelimesi ile aynı işlevi yapar. İste sorgu esnasında join yazalım istersek inner join sonuç aynı dönecektir.
Ana mantığı iki tablo arasında eşleşme olduğunda bize eşleşen değerleri döner.
Syntax:
SELECT kolon_ismi
FROM tablo_1 INNER JOIN tablo_2
ON tablo1_kolon-ismi = tablo2_kolon-ismi
Yukarıda ki şekilde JOIN anahtar kelimesinin açıklamasını şematize olarak ifade etmiştir.
LEFT JOIN:
LEFT JOIN, sağ tabloda eşleşme olmasa bile, sol tablodaki tüm satırları sonuç olarak döndürür.
Bunun anlamı, sağdaki tabloda ON anahtar kelimesinde eşleşme yoksa, birleştirme yine sonuçtaki ilk tablodaki satırları döndürecektir.
Basit şekilde yazım kuaralı,
SELECT table1.column1, table2.column2...
FROM table1 LEFT OUTER JOIN table2
ON table1.column_name = table2.column_name;
- OUTER kelimesi opsiyonel olarak kullanılabilir LEFT JOIN yazmak aynı işlemi yapacaktır.
Bir örnek ile anlamaya çalışalım. Aşağıda iki tabloya ait veriler vardır.
Şimdi LEFT JOIN kullanarak bir SQL yazalım.
SELECT customers.Name, items.Name
FROM customers LEFT OUTER JOIN items
ON customers.ID=items.Seller_id;
- Belirli bir satır için eşleşme bulunmazsa, NULL döndürülür.