TOP

SQL Dersi 12. Birleştirilmiş sorgular (UNION)

Çoğu SQL sorgusu, bir veya daha fazla tablodan veri döndüren tek bir ifade kullanır. SQL aynı anda birden fazla ayrı sorgu çalıştırmanıza ve sonucu tek bir veri kümesi olarak görüntülemenize de olanak tanır. Bu tür birleştirilmiş sorgulara genellikle birleştirme veya bileşik sorgular adı verilir.


1. UNION operatörünü kullanma

SQL sorguları UNION operatörü kullanılarak birleştirilir. Bunu yapmak için, her isteği SELECT belirtmeniz ve aralarına UNION anahtar kelimesini yerleştirmeniz gerekir. UNION operatörünün tek bir genel sorguda kullanım sayısında herhangi bir sınırlama yoktur. Önceki bölümde MS Access'nin tam bir dış birleşim oluşturma yeteneğine sahip olmadığını belirtmiştik, şimdi bunun UNION operatörü aracılığıyla nasıl sağlanabileceğini göreceğiz.

Run SQLSELECT *
FROM Sumproduct 
LEFT JOIN Sellers2 
ON Sumproduct.City = Sellers2.City
UNION
SELECT * 
FROM Sumproduct 
RIGHT JOIN Sellers2 
ON Sumproduct.City = Sellers2.City

Tüm kayıtların başka bir tabloda karşılıkları olup olmadığına bakılmaksızın sorgunun hem birinci tablodaki hem de ikinci tablodaki tüm sütunları görüntülediğini görüyoruz.

Ayrıca birçok durumda UNION yerine WHERE deyimini birçok koşulla birlikte kullanabileceğimizi ve benzer bir sonuç elde edebileceğimizi de belirtmekte fayda var. Ancak UNION sayesinde kayıtlar daha kısa ve net görünüyor.

Birleştirilmiş sorgular yazarken belirli kurallara uymak da gereklidir:

  • UNION isteği, UNION anahtar sözcüğüyle ayrılmış iki veya daha fazla SELECT işleci içermelidir (yani, istekte dört SELECT işleci kullanılıyorsa, o zaman üç UNION anahtar sözcüğü bulunmalıdır);
  • UNION operatöründeki her sorgu aynı sütunlara, ifadelere veya istatistiksel işlevlere sahip olmalı ve ayrıca bunlar aynı sırada listelenmelidir;
  • sütun veri türleri uyumlu olmalıdır. Bunların mutlaka aynı türde olmaları gerekmez, ancak DBMS'nin bunları açıkça dönüştürebilmesi için benzer türde olmaları gerekir (örneğin, farklı sayısal veri türleri veya farklı tarih türleri olabilirler).
  • 2. Tekrarlanan satırları dahil edin veya hariç tutun

    UNION içeren bir sorgu, sorgu sonuç kümesinden yinelenen tüm satırları otomatik olarak kaldırır (başka bir deyişle, tek bir SELECT ifadesinde birden çok koşul içeren bir WHERE yan tümcesi gibi davranır). Bu, UNION operatörünün varsayılan davranışıdır ancak istersek değiştirebiliriz. Bunun için UNION yerine UNION ALL operatörünü kullanmalıyız.

    3. Birleştirilmiş sorguların sonuçlarını sıralama

    SELECT ifadesinin sonuçları, ORDER BY ifadesi kullanılarak sıralanır. UNION kullanarak sorguları birleştirirken yalnızca bir ORDER BY yan tümcesi kullanılabilir ve bu, son SELECT ifadesine yerleştirilmelidir. Aslında pratikte sonuçların bir kısmını bir sıraya, diğer kısmını da başka bir sıraya sıralamak pek mantıklı değil. Bu nedenle, birden fazla ORDER BY cümlesine izin verilmez.