SQL – UNION ve UNION ALL Operatörü ve Kullanımı – Ders 21

Var olan veritabanı ve tablolarda kontrol, select, düzenleme işlemlerine kaldığımız yerden devam ediyorum. Bu konuda ise birden fazla SELECT sorgusunu tek bir işlemmiş gibi yapan UNION ve UNION ALL operatörlerinden bahsedeceğim. Sorgunun Syntax kullanımı ve örnekler ile tam olarak kavrayabileceğinizi düşünüyorum.

İlk olarak UNION ve UNION ALL operatörlerinin genel kullanımına bakalım.

İki adet SELECT sorgusunu tek bir sorgu gibi yapmamızı sağlayan UNION operatöründe dikkat edilmesi gereken birkaç husus var. Bunların başında sütunların aynı data tipinde olması gerektiğidir. Örneğin 3 sütun listeleyecekseniz, iki select için de seçeceğiniz sütunların aynı data tipine sahip olmaları gerekiyor. Aksi takdirde hata verecektir.

Yukarıdaki tabloların ilki Customers ve ikincisi Supliers tablosu. Biz bu tablodaki şehirleri listelemek istiyoruz. Fakat ikisi için de ayrı ayrı sorgu yapmak yerine tek bir sorguyla işi halletmemiz önemli. Bu yüzden UNION operatöründen faydalanıyoruz.

Sorgumuza baktığımızda Customers ve Suppliers tablolarındaki City sütunlarını listeliyoruz. En sonunda da elde ettiğimiz sonuçları ORDER BY ile sıralıyoruz. Burada önemli olan bir diğer nokta aynı olan değerlerin sadece bir kere listelenmesi. Sonucumuz:

OKUMALISIN!  SQL - ORDER BY ile Verileri Sıralama - Ders 5

City
Germany
Mexico
UK
USA

Bu sonuca baktığımızda iki kere USA ve 2 kere Mexico olması gerekirken bunların birer kere listelendiğini görüyoruz. Bunun nedeni UNION olarak kullanmamız.

Peki biz tek bir kere değil de ne kadar kayıt varsa listelenmesini istiyorsak ne yapacağız? İşte orada devreye UNION ALL operatörü giriyor. Aynı tablo üzerinden aynı işlemi UNION ALL ile yapalım.

İşlemi gerçekleştirdiğimizde aşağıdaki sonuçla karşılaşacağız:
City
Germany
Mexico
Mexico
UK
USA
USA

Görüldüğü üzere değerler aynı olmasına rağmen listelendi. UNION ile UNION ALL arasındaki en büyük fark budur SQL’de.

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