NION 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.
Şimdi bu resmettiğimiz durumu sorguya dökelim.
123 | 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ç :
51437 satır sonuç geriye döndü. Şimdi detay açıklamaya girmeden birde aşağıdaki sorguyu yazalım ve sonucu görelim.
123 | 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 :
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.