MsSql Inner Join , Left Join , Right Join ve Full Join Kullanımı

Değerli dostlarım merhabalar, Birden fazla tabloyu birleştirmek için Join kullanırız. Daha çok ilişkili iki tablo birleştirilmesi için kullanılır. 4 farklı Join kavramı vardır. Bunlar; Inner JoinLeft JoinRight Join ve Full Join dir. Şimdi örnekler ile bunları açıklayalım.

İnner Join

Seçilen tablolardaki ortak değerleri filtre ederek istediğimiz veriyi bizlere sunar. Aşağıdaki örnek kodumuzu inceleyelim.

SELECT pv.ProductID, v.BusinessEntityID, v.Name
FROM Purchasing.ProductVendor AS pv 
JOIN Purchasing.Vendor AS v
    ON (pv.BusinessEntityID = v.BusinessEntityID)
WHERE StandardPrice > $10

Left Join

Left join solda yer alan tablonun tüm kayıtlarını sağdaki tablonun ise eşleşen kayıtlarını alan bir fonksiyondur. Örneğimizi inceleyelim.

SELECT product_name, order_id FROM production.products p
LEFT JOIN sales.order_items o 
ON o.product_id = p.product_id
ORDER BY order_id;

Right Join

Right join sağda yer alan tablonun tüm kayıtlarını soldaki tablonun ise eşleşen kayıtlarını alan bir fonksiyondur. Örneğimizi inceleyelim.

SELECTproduct_name,order_id FROM sales.order_items o RIGHT JOIN production.products p 
        ON o.product_id = p.product_id
ORDER BY order_id;

Full Join

Full Join kavramının diğer Join işlemlerinden pek bir farkı bulunmamaktadır. Aynı şekilde 2 tablo birleştirilir. Kısa bir örnek ile açıklayalım.

SELECT m.name member, p.title project FROM pm.members m
FULL OUTER JOIN pm.projects p 
ON p.id = m.project_id;

Diğer örneklerimiz gibi yukarıda yer alan Sql kodumuzda yine birleştirme işlemi yaptık.

Tablo birleştirme işlemlerinde Join kavramını rahatlıkla kullanabilirsiniz. Ama benim fikrimi sorarsanız Join yerine View kullanmanız daha iyi olacaktır. Sanal tablo olarak çalıştığı için performansta artış olacaktır. Bir diğer konu ise view larda tablo isimlerimizi ve kolonlarımızı saklamaktır. Bunun da artısı oldukça fazladır.

Proje büyüdükçe Join yerine view kullanmak daha mantıklı olacaktır.

Diğer bir dersimizde görüşmek üzere.

Bir cevap yazın

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

Shares