Ç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.
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 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.
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.