Majoritatea interogărilor SQL folosesc o singură instrucțiune care returnează date dintr-unul sau mai multe tabele. De asemenea, SQL vă permite să rulați mai multe interogări separate în același timp și să afișați rezultatul ca un singur set de date. Astfel de interogări combinate sunt de obicei numite alăturari sau interogări complexe.
Interogările SQL sunt combinate folosind operatorul UNION. Pentru a face acest lucru, trebuie să specificați fiecare cerere SELECT și să plasați cuvântul cheie UNION între ele. Nu există limită pentru numărul de utilizări ale operatorului UNION într-o interogare generală. În secțiunea anterioară am observat că MS Access nu are capacitatea de a crea o uniune exterioară completă, acum vom vedea cum se poate realiza acest lucru prin operatorul UNION.
Run SQLSELECT *
FROM Sumproduct
LEFT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
UNION
SELECT *
FROM Sumproduct
RIGHT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
Vedem că interogarea a afișat atât toate coloanele din primul tabel, cât și din al doilea, indiferent dacă toate înregistrările au corespondente într-un alt tabel.
De asemenea, este de remarcat faptul că în multe cazuri, în loc de UNION, putem folosi clauza WHERE cu multe condiții și obținem un rezultat similar. Cu toate acestea, prin UNION, înregistrările par mai concise și mai clare.
De asemenea, este necesar să urmați anumite reguli atunci când scrieți interogări combinate:
O interogare cu UNION elimină automat toate rândurile duplicate din setul de rezultate ale interogării (cu alte cuvinte, se comportă ca o clauză WHERE cu mai multe condiții într-o singură instrucțiune SELECT). Acesta este comportamentul implicit al operatorului UNION, dar îl putem schimba dacă dorim. Pentru aceasta ar trebui să folosim operatorul UNION ALL în loc de UNION.
Rezultatele instrucțiunii SELECT sunt sortate folosind instrucțiunea ORDER BY. Când combinați interogări folosind UNION, poate fi utilizată o singură clauză ORDER BY și trebuie plasată în ultima instrucțiune SELECT. Într-adevăr, în practică, nu are prea mult sens să sortăm o parte din rezultate într-o ordine, iar cealaltă parte într-o altă ordine. Prin urmare, propozițiile multiple ORDER BY nu sunt permise.