Anasayfa / Yazılım / SQL / FULL OUTER JOIN Fonksiyonu

FULL OUTER JOIN Fonksiyonu

FULL OUTER JOIN fonksiyonu LEFT OUTER JOIN ve RIGHT OUTER JOIN fonksiyonlarına oldukça benzemektedir. Aradaki fark ise şudur, birleştirilen iki veya daha fazla tablo için eşleşme olsun ya da olmasın tablolar birleştirildiği için her tablonun verileri listelenir. Tabi bu tip bir sorgu pek kullanılır mı diye sorarsanız işin açıkcası pek kullanıldığını ihtiyaç duyulduğunu ben görmedim 🙂 Syntax olarak kullanım :

SELECT listelenecek kolonlar FROM tablo1 FULL OUTER JOIN tablo2 ON tablo1.kolon1 = tablo2.kolon2

Şimdi bir örnekle konuya devam edelim. AdventureWorks veritabanı üzerinde işlem yapıyorum. Bu veritabanı üzerinde FULL OUTER JOIN kullanabileceğim pek imkan olmadığı için bir tablo oluşturucam. Tablomun adı Production.ProductColor. Bu tablomda tek bir kolon olsun bu da nvarchar tipinde Color alanına sahip olsun.

CREATE table Production.ProductColor (Color nvarchar(20) NOT NULL PRIMARY KEY)

Tablomu oluşturdum. Şimdi bir kaç veri giriyorum. Bunuda hadi T-SQL ile yapalım. Manuel olarak değilde kodla yapalım. Veri girişi için ms sql’de INSERT INTO deyimini kullanmamız gerekiyor.

Kopyalama yolu ile renk ekleyelim. Bunun için aşağıdaki sorguyu yazalım.

INSERT INTO Production.ProductColor SELECT DISTINCT Color FROM Production.Product 
WHERE Color IS NOT NULL and Color <> 'Silver'

Bu sorgum ile Production.Product tablosunda Color alanı NULL olmayan ve Silver olmayan tüm renkleri alıyoruz ve Production.ProductColor tablosunda Color alanına ekliyoruz.

INSERT INTO Production.ProductColor VALUES ('Green'),('Orange'),('Purple');

Bu sorgu ile de Production.ProductColor tablosuna Green, Orange ve Purple Değerlerini ekledik.

Şimdi gelelim asıl konumuza, amacımız FULL OUTER JOIN kullanmak. Şöyle bir sorgu yazıyorum :

SELECT Renk.Color AS "Tablodaki renkler", Urun.Color, Urun.ProductID
FROM Production.Product AS Urun 
FULL OUTER JOIN Production.ProductColor AS Renk ON Urun.Color = Renk.Color 
ORDER BY Urun.ProductID 

Sorgumuzun sonucu :

2013022102

Sorgu sonucunda görüldüğü üzere Production.ProductColor tablosunda Color alanında yer alan veriler ile Production.Product tablosundaki verilerin eşleşmediği durumlarda Production.Product tablosundaki veriler NULL olduğundan dolayı eşleşmemesine rağmen listeleniyor. Örneğimizdeki 1,2 ve 3. satırlar bu şekilde.

Production.Product tablosundaki renkler ile Production.ProductColor tablosundaki renklerde eşleşmediğinde geriye NULL değer dönüyor. Örneğimizde 12 ve 13. satırlar bu şekilde.

Eğer Production.Product tablosundaki bir ürün Production.ProductColor tablosundaki renkler ile eşleşiyor ise bu sefer ilgili değerler dönüyor. Bizim örneğimiz için 9,10 ve 11. satırlar bu şekilde.

Bir sonraki yazımızda görüşmek üzere..

Bir cevap yazın

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