Interogarea datelor din mai multe relatii folosind instructiunea UNION Sintaxa interogarii datelor din mai multe relatii folosind instructiunea UNION este SELECT Camp 1, Camp 2, ..., Camp n FROM Tabel 1 UNION (ALL)
SELECT Camp 1A, Camp 2A,..., Camp nA FROM Tabel 2 si returneaza inregistrari distincte, daca este folosita instructiunea UNION si toate inregistrarile, daca se foloseste UNION ALL. Astfel operatorul UNION elimina duplicatele, iar UNION ALL vizualizeaza toate inregistrarile, inclusiv duplicatele.
Pentru a utiliza aceasta interogare, trebuie sa se tina seama de doua cerinte: domeniile Camp 1A, Camp 2A,..., Camp nA si Camap 1, Camp 2, ..., Camp n trebuie sa fie respectiv aceleasi si, numarul de campuri din fiecare interogare trebuie sa coincida.
Operatorul UNION se foloseste atunci cand intre relatii nu exista o asociere directa.
Exemplul 1: Pentru exemplificare se vor considera relatiile: PROFESORI (prof_id, nume, prenume), respectiv STUDENTI (stud_id, nume, prenume). Selectati lista numelor tuturor profesorilor si a studentilor.
SELECT nume, prenume FROM PROFESORI
UNION ALL
SELECT nume, prenume FROM STUDENTI;
Rezultatul generat de interogare va fi
Fig. 13.1. Interogarea mai multor relatii folosind operatorul UNION ALL
Observati: Problema mai poate fi solutionata utilizand alte interogari, dar acestea raman ca exercitii individuale.
Exemplul 2: Sa se determine care sunt ofertele si cererile solutionate prin facturi, afisand intr-o lista id_ul cererii/ofertei si cnp-ul cleintului, atat din tabela CERERI_OFERTE cat si din tabela FACTURI.
SELECT cnp, id_co FROM FACTURI
UNION ALL
SELECT cnp, id_co FROM CERERI_OFERTE;
Rezultatul generat de interogare va fi o lista greu de urmarit, dupa cum este si cea din figura 13.1, deoarece nu se specifica clar care inregistrare corespunde facturilor, si care tabelei CERERI_OFERTE (acest neajuns va fi inlaturat utilizand concatenarea):