Join kelime olarak katılmak anlamındadır. Maksatımız sorgularda iki tablonun bir araya getirilerek tek bir tabloda birleştirme yapmaktır. Biliyorsunuz ki iki tablodan veriler kullanmak istersek mutlaka join işlemi gerçekleştirmek zorundayız. Özetlersek iki tabloyu tek tablo haline getir ve istediğin kolonları kullan diyebiliriz. Joinleme işlemi yaparken birkaç join çeşitleri bulunmaktadır.

İnner join

Örnek üzerinden gidecek olursak. Ürünler tablosundan kategorileri x olan ürünleri çekelim istiyorum. Bunun için öncelikle veritabanı modelimize bir bakalım.

veri tabanı modeli

Bu şekil üzerinden CategoryID ile Product tablosundaki CategoryID birbirine bağlanmıştır. Yani joinleme işlemi yaparken iki tablonun ortak sütunlarını kullanarak joinleme yapacağız.

select * from products inner join Categories on Products.CategoryID= Categories.CategoryID

bu sorgu ile iki tabloda kaç kolon varsa ikisinin toplamı şeklinde tablo oluşturduk gibi bir şey denilebilir.

Örnek: Supplier ve products tablolarında CompanyName, ContactName ve ProductName kolonlarını yazdırın. Burada dikkat edilmesi gereken iki tablonun ortak kolonu varsa bunları birbirine bağlayın.

select ContactName, CompanyName,ProductName
from products inner join Suppliers
on Suppliers.SupplierID=Products.SupplierID

Örnek: Çalışan hangi müşteriden hangi siparişleri aldı?

Öncelikle Çalışan tablosu, Müşteri tablosu ve siparişler tablosu bulunmaktadır. Burada 3 tablo vardır ve birbirine bağlamak son derece önemlidir. 3 tabloda da ortak olmayan kolonlar olabilir. Burada öncelikle bağlantılı kolonları olan tabloları bulup onları bağlamak gerekir. Sonra diğeri bağlanmalı.

select FirstName,LastName,CompanyName,OrderID
from Orders inner join Customers
on Orders.CustomerID=Customers.CustomerID
inner join Employees
on Employees.EmployeeID=Orders.EmployeeID

Yukarıdaki sorgunun en kısa versiyonunu şimdi yazalım. Daha önceden takma isim verebileceğimizi öğrenmiştik. Orders tablosuna o, Customers tablosuna c, Employees tablosuna e diyerek aşağıda isimlendirme işlemi yaptım. Bundan sonra Artık her tablonun bir ismi olacağı için takma isimle kullanmanızı isteyecektir. İnner join kısmındaki inner da kalkabilir Yani Join yazmanız aslında iki tabloyu inner join ile birleştirdiğiniz anlamına gelmektedir.

select FirstName,LastName,CompanyName,OrderID
from Orders as o join Customers as c
on o.CustomerID=c.CustomerID
join Employees as e
on e.EmployeeID=o.EmployeeID

Bazen öyle anlar olur ki bir tablonun tüm kolonları sağda veya solda olmasını isteriz. Diğer tablonun sadece ilgili alanlarını kullanmak isteriz. O zaman devreye LEFT ve RIGHT JOIN ler giriyor.

RIGHT JOIN:

Herhangi bir eşleşme durumu olmasa dahi tüm satırlarını listeletmek istediğimiz tabloyu sağda gösterecek isek bu sefer RIGHT kullanırız.

LEFT JOIN:

Eğer birleştirdiğimiz iki tablo içinde tüm satırlarını göstermek istediğimiz ana tabloyu sorgumuzda sol tarafta yazıyorsak mutlaka LEFT JOIN kullanmamız gerekir.

Bir sonraki yazımızda bu konumuza detaylı şekilde değineceğiz.

Kategoriler: SQL

Sümeyra Akbıyık

hakkımdaki her şeyi bu blogda bulabilirsin. Haydi sende bir göz gezdirmeye ne dersin?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir