Son Haberler
Anasayfa / Yazılım / SQL / UNION ve UNION ALL Fonksiyonları

UNION ve UNION ALL Fonksiyonları

UNION deyimi iki veya daha fazla sorgunun sonuçlarını birleştirmek için kullanırız. Bu iki veya dahaz fazla sorgu sonucu oluşan değerler tek bir tablo üzerinde geriye döndürülür. Syntax yani söz dimizi aşağıdaki gibidir :

SELECT listelenecek tablo kolonları FROM tablo1 UNION SELECT listelenecek kolonlar FROM tablo2

veya UNION ALL ile;

SELECT listelenecek tablo kolonları FROM tablo1 UNION ALL SELECT listelenecek kolonlar FROM tablo2

Aşağıdaki şekilde UNION kullanımı sonucu nasıl bir sorgu sonucu alabiliriz resmetmeye çalıştım. UNION kullanırken dikkat edilecek nokta listelenecek kolonların aynı türde, birbiri ile uygun türde veri tiplerine sahip olmasıdır.

2013022701

Şimdi bu resmettiğimiz durumu sorguya dökelim.

SELECT BusinessEntityID AS ID FROM HumanResources.Employee 
UNION SELECT BusinessEntityID FROM Person.Person
UNION SELECT SalesOrderID FROM Sales.SalesOrderHeader ORDER BY ID

Sorgumda HumanResources.Employee tablosundan BusinessEntityID, Person.Person tablosundan BusinessEntityID ve Sales.SalesOrderHeader tablosundan SalesOrderID kolonlarındaki verileri listeledim.

Sonuç :

2013022702

51437 satır sonuç geriye döndü. Şimdi detay açıklamaya girmeden birde aşağıdaki sorguyu yazalım ve sonucu görelim.

SELECT BusinessEntityID AS ID FROM HumanResources.Employee 
UNION ALL SELECT BusinessEntityID FROM Person.Person
UNION ALL SELECT SalesOrderID FROM Sales.SalesOrderHeader ORDER BY ID

Bu sefer UNION’dan sonra ALL ekledik. Sonucu görelim :

2013022703

Sonuç olarak 51727 satır veri var.

Şimdi ilk sorgumda birbiri ile aynı değere sahip veriler listelenmiyor. İkinci sorgumda ise ALL dediğimiz için veriler tekrar etse dahi listeleniyor. Resimlerde de durumları görebiliriz, zaten geriye dönen satır değerleri de farklı.

UNION deyimi tamamen iki benzer tablonun ilgili kolonlarını birleştirmek için kullanılır. Örneğin bir veritabanı ilgili şirketin her bölümü için ayrı ayrı müşteri bilgilerini farklı tablolarda tutuyor olsun. Biz UNION kullanarak buy farklı tablolarda yer alan müşteri bilgilerini tek bir tabloda birleştirerek sorgumuz sonucu geriye döndürebiliriz. Dikkat edeceğimiz konu üstte de yer verdiğim gibi UNION kullanırken birbiri ile birleşecek tabloların kolonlarının aynı tipte ya da uygun tipte veri türüne sahip olmaları gerektiğidir.

Bir örnek daha yapıp konuyu bitiriyorum. Person.Person tablosundaki ModifiedDate kolonu ile HumanResources.Employee tablosundaki HireDate kolonunu birleştiriyorum.

SELECT ModifiedDate FROM Person.Person 
UNION SELECT HireDate FROM HumanResources.Employee

2013022704

Bir yorum

  1. Hocam merak ettiğim aynı türdeki verileri alt alta yazdırmak değil de yan yana yazdırmak istersek ne yapmamız gerekecek?

Bir cevap yazın

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