Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Sql


Index » educatie » » informatica » Sql
» Subinterogari simple care returneaza mai multe valori


Subinterogari simple care returneaza mai multe valori


Subinterogari simple care returneaza mai multe valori

Principiul de construire a acestui tip de interogare imbricata este acela de a utiliza in clauza WHERE conditii, care fiind evaluate genereaza o multime de valori. In aceasta categorie intra predicatele (NOT) IN, (NOT) ANY, (NOT) ALL, (NOT) EXISTS.

Exemplu:

Sa se afiseze produsele comandate in cantitate mai mare decat oricare din produsele aflate pe factura 1000.

Select cod_produs

From Facturi

Where cantitate > ANY

(Select Cantitate



From Facturi

Where Nr = 1000)

Interogarea este evaluata astfel: daca cantitatea comandata pentru un produs este mai mare decat oricare dintre cantitatile returnate de catre interogarea interioara, acel produs este inclus in rezultat.

Pentru a putea compara cantitatea comandata pentru un produs cu oricare din cantitatile de pe factura 1000, se utilizeaza predicatul ANY. Predicatul ANY poate fi utilizat in combinatie cu oricare din operatorii de comparatie, pentru a verifica daca valoarea unui atribut este in acea relatie cu orice valoare din lista generata de catre subinterogare.

Urmatoarele conditii sunt echivalente:

= ANY → IN

!=ANY → NOT IN

Predicatul ALL returneaza tuplurile pentru care valorile atributului din clauza WHERE sunt >=, <=, >, < decat toate valorile generate de interogarea interioara. Acest predicat nu poate fi utilizat cu operatorul " = ", care ar corespunde cazului banal in care toate valorile din lista sunt identice.

Exemplu:

Select * From Facturi

Where Cantitate < ALL

(Select Cantitate From Facturi

Where numar = 2000)

Se selecteaza toate facturile a caror cantitate este mai mica decat toate cantitatile de pe factura 2000.

Predicatul EXISTS verifica daca pentru fiecare tuplu al relatiei, exista tupluri care satisfac conditia interogarii interioare. In cazul in care exista asemenea tupluri, EXISTS capata valoarea de adevar TRUE. Astfel, predicatul EXISTS permite specificarea mai multor atribute in interogarea interioara, fiind de altfel singurul predicat care permite acest lucru. Aceasta, datorita faptului ca nu se verifica valoarea unui anumit atribut ca in cazurile anterioare, ci se genereaza o valoare de adevar T sau F, dupa cum exista sau nu o anumita valoare intr-o relatie, diferita de cea utilizata in interogarea exterioara.

De exemplu, putem raspunde la intrebari de genul: " Exista beneficiari care nu au facut nici o comanda de produse?". Astfel, operatorul EXISTS verifica daca o multime de tupluri definita de instructiunea SELECT este vida.

Exemplu:

Select * From Clienti

Where Not Exists

(Select * From Comenzi

Where Clienti.cod_client=Comenzi.cod_client )

Interogarea Select interioara defineste o multime de tupluri ce contin comenzile pentru fiecare beneficiar. Daca un beneficiar nu a facut nici o comanda, conditia Not Exists este evaluata la True. Interogarea exterioara va defini, in consecinta, o multime de tupluri ale relatiei Clienti care nu au facut nici o comanda de produse.





Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate