CATEGORII DOCUMENTE |
Un caz mai special de interogare a mai multor tabele este acela in care combinam rezultatele a doua sau mai multe interogari independente una de cealalta.
Operatorii folositi in acest scop sunt:
UNION ALL - returneaza toate liniile returnate de de interogarile pe care le leaga, inclusiv duplicatele (daca cele doua subinterogari returneaza amanduua o aceeasi linie, acest operator le va include pe ambele in rezultat)
UNION - asemanator cu operatorul anterior insa sunt eliminate duplicatele
INTERSECT - afiseaza liniile returnate de ambele interogari
MINUS - returneaza liniile care sunt returnate de prima interogare dar nu sunt returnate si de a doua interogare.
Atentie! Numarul de coloane si tipul coloanelor returnate de cele doua nterogari trebuie sa fie acelati, chiar daca au alt nume.
Sintaxa folosirii acestor operatori este
interogare operator interogare
Vom exemplifica utilizarea acestor operatori pe doua tabele formale
Tabelul II.3.10. Tabela A
|
Tabelul II.3.11. Tabela B
|
Tabelul II.3.12. Tabela C
|
Interogarea
SELECT ColA, ColB FROM A
UNION ALL
SELECT ColC, ColD FROM B
va afisa tabela II.3.13. Comanda urmatoare va elimina duplicatele, rezultatul fiind cel din tabela II.3.14.
SELECT ColA, ColB FROM A
UNION
SELECT ColC, ColD FROM B
Tabelul II.3.13. Utilizarea operatorului UNION ALL
|
Tabelul II.3.14. Utilizarea operatorului UNION
|
Similar comenzile urmatoare vor afisa tabelul II.3.14 si respectiv II.3.15:
SELECT ColA, ColB FROM A
INTERSECT
SELECT ColC, ColD FROM B
si
SELECT ColA, ColB FROM A
MINUS
SELECT ColC, ColD FROM B
Tabelul II.3.14. Utilizarea operatorului INTERSECT
|
Tabelul II.3.15. Utilizarea operatorului MINUS
|
Un exemplu practic de folosire a acestor operatori poate fi dat daca ne imaginam ca pentru cercul de informatica de la liceul vostru, profesorul coordonator de cerc a intocmit un tabel info continand numele prenumele si clasa elevilor inscrisi la acest cerc. Similar, profesorul de la cercul de matematica a realizat un tabel mate cu aceeleasi coloane, memorand elevii de la cercul de matematica.
Directorul scolii doreste, de exemplu, o lista cu elevii inscrisi la ambele cercuri. Nu aveti altceva de facut decat sa scrieti urmatoarea comanda:
SELECT nume, prenume, clasa FROM info
INTERSECT
SELECT nume, prenume, clasa FROM mate
Desigur puteti combina mai mult de doua interogari folosind operatorii UNION INTERSECT si MINUS. Implicit operatorii sunt evaluati de jos in sus, insa puteti indica ordinea de efectuare a acestor operatii prin folosirea parantezelor. De exemplu comanda
SELECT colA, colB FROM A
UNION
SELECT colC, colD FROM B
INTERSECT
SELECT colE, colF FROM C
va returna tabelul II.3.16 in timp ce comanda
SELECT colA, colB FROM A
UNION
(SELECT colC, colD FROM B
INTERSECT
SELECT colE, colF FROM C)
va returna tabelul II.3.17.
Tabelul II.3.16.
|
Tabelul II.3.17.
|
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1696
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved