Serkan Ayyıldız

Meraklı bir yazılım uzmanı...

SQL Full Outer Join Sorgusu

MSSQL meraklısı veritabanı uzmanlarına selamlar :)

Her SQL makalemizde veritabanı yönetimini ve sorgu tiplerini yeniden keşfederken bugünkü makalemizde SQL Full Outer Join sorgusunu ve önemini öğreneceğiz.

Önceki SQL makalemizde Inner Join konusunu öğrenirken aşağıdaki görsel ile join sorgularının tiplerini görmüştük:

SQL-Join

Görselde gördüğünüz gibi her küme bir SQL tablosunu ifade etmektedir.Full outer join ise her iki tabloda eşleşen ya da eşleşmeyen tüm kayıtların listesini getirir.

Somut olması açısından şu şekilde anlatayım:
Ürünler tablosunda ID değeri 3 olan ürünün stoklar tablosunda herhangi bir kaydı olsun ya da olmasın mutlaka görüntülenmesini sağlar.Eğer ürüne ait stok bilgisi varsa stok bilgilerini de aynı satırda beraberinde getirecek, eğer stok bilgisi yoksa ilgili kısımlar null (boş) olarak işaretlenecek.Yani bir tablodaki kayıt diğer tabloda kullanılsın ya da kullanılmasın her türlü görüntülenir.

Şimdi örnek veritabanımız olan BakkalDB'nin tablo yapısına bakalım:

bakkaldb

BakkalDB'yi kısaca hatırladığımıza göre veritabanımıza yeni bir tablo ekliyoruz:



Stoklar isimli bu tablomuzun amacı bir ürüne ait ne kadar hazırda satılmayı bekleyen ürün adedi kayıtlarını tutacak ve dolayısıyla ürünler tablosu ile foreign key anahtarlama tipiyle ilişkili olmaktadır.

Makaleyi uzatmamak için kendim SQL insert sorguları ile 10 kayıt giriyorum:



Artık elimizde 10 ürünün stok bilgileri yer alıyor:



Diğer ürünlerin stok bilgilerini yukarıdaki SQL script dosyasında hazır bulacaksınız ancak öğrenmeniz için şimdilik o konuyu atlıyorum.Dikkat ederseniz bazı ürünlere ait stok bilgileri yer almasına karşın diğerlerinin stok sayıları null geçilmiş,bunu bilerek yaptım :)

Şimdi önceki makalemizde öğrendiğimiz inner join sorgusunu kullanarak kayıtları listeleyelim:



Şimdi ise aynı sorguyu full outer join ile çalıştıralım:



Aradaki farktan bahsedecek olursak inner join ile full outer join sorgusunun farkından da bahsetmiş oluruz:

Inner join birbirine bağlı en az iki tablodaki verilerin diğer tablodada olup olmadığına bakarak minimum ve en optimum
kayıtlarını listeler,böylece ikinci tabloda yer almayan kaydı ilk tablodada göstermeye gerek yoktur der.
Full outer join ise bir tabloya ait bir veri diğer tabloda kullanılsın ya da kullanılmasın tablolardan kayıt sayısı en fazla olanı kadar kayıt listesi döndürür ancak dönen kayıtlardan bir ya da daha fazlası diğer tabloda kullanılmamışsa kullanılmayan kısımlar null olarak gösterilir.

Inner join ile full outer join konusunu kafada kalıcı olması adına şunu çok iyi ezberleyin derim; inner join ile her iki tabloda veri olmak zorunda ama full outer join ile tablolardan en az birinde kayıt olsa yeterlidir.

Açıkçası yazılım hayatım boyunca çok fazla full outer join sorgusunu kullanmadım ancak kullanılması gereken yerler
tabiki var ama bana çok denk gelmedi.Umarım full outer join sorgusunu kullanmak size bol bol nasip olur :)

Bir sonraki makalemizde ise left join ve right join sorgularını öğreneceğiz,o zamana dek kendinize iyi bakın hoşçakalın :)

BakkalDB veritabanının en güncel halini buradaki linkten indebilirsiniz.



Bir yorum bırak E-posta adresiniz yayınlanmayacaktır.

Menu