SQL – FULL OUTER JOIN Kullanımı – Ders 20

Yavaş yavaş JOIN konusunu bitiriyoruz. INNER, LEFT ve RIGHT JOIN’den sonra sırada biraz daha karışık bir yapıya sahip olan FULL OUTER JOIN var. İsminden de anlayacağınız üzere bu yapı, iki tablonun da direkt olarak birleştirilmesini sağlıyor. Peki bu işlemi asıl yapıyor?

Mantığı iyi bir şekilde kavramamız adına bir adet şema belirttim. Şemaya uygun şekilde yapılan işlem:

  • İlk tablo ile ikinci tablodaki ortak kayıtlar birleştirilerek eklenir.
  • İlk tabloda olup ikinci tabloda olmayan kayıtlar eklenir.
  • İlk tabloda olmayıp ikinci tabloda olan kayıtlar eklenir.

Kısacası iki tablodaki tüm kayıtların birleştiğini görüyoruz.

Temel mantığını kavradığımıza göre ilk olarak Syntax şeklinde kullanımına ardından da örneğimize geçelim.

Soruyu oluştururken FROM kısmına ve FULL OUTER JOIN kısmına vereceğiniz tabloların sıralaması, kayıtların listelenmesindeki sıralamayı da etkileyecektir. Bunu unutmayalım.

Örneğimize geçecek olursak, Customers ve Orders isimli iki adet tablo için JOIN işlemi yapacağız. İlk olarak tablo örneklerimize bakalım.

Bu iki tablo için FULL OUTER JOIN sorgumuzu çalıştıracağız.

Yapılan işlemlere bakacak olursak, Customers ve Orders isimli iki tablomuz FULL OUTER JOIN işlemine giriyor ve buradaki referans sütunları CustomerID olarak belirleniyor. Ayrıca ORDER BY ile CustomerName değerleri küçükten büyüğe sıralanıyor. Sorgu çalıştırdıktan sonra ortaya çıkan Result ise şu şekilde:

OKUMALISIN!  SQL - SELECT DISTINCT Sorgusu ve Kullanımı - Ders 2

RIGHT JOIN’ı anlatırken kullandığımız örnek tabloları burada da kullandığımız için ekstra değerler ile karşılaşabilirsiniz. Bu kısım sadece resultun belli bir bölgesi. Peki tablodan nasıl bir çıkarım yapıyoruz? Öncelikle left join işlemi yapılıyor. Ardından da right join işlemi yapılıyor. Sonuç olarak da yukarıdaki tablo dönüyor. İşte FULL OUTER JOIN’in yaptığı eylem bu.

1 Star2 Stars3 Stars4 Stars5 Stars (1 oylama, average: 5,00 out of 5)
Loading...

Bir cevap yazın

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