Subinterogari corelate

    Serverul Oracle  realizeaza o subinterogare corelata cand o subinterogare face referinta la  o coloana a tabelului  referit in interogarea principala. Subinterogarea este evaluata  cate o data pentru  fiecare rand procesat  de  declaratia parinte.
    Declaratia parinte poate  sa constea intr-o fraza SELECT, sau instructiuni UPDATE (actualizari corelate) respectiv DELETE (stergeri corelate).

Subinterogari  incapsulate  versus subinterogari corelate

     In cazul subinterogarilor normale (incapsulate), la inceput este rulata subinterogarea, o singura data,  si intoarce valorile care vor fi utilizate de  interogarea principala.
    O interogare corelata este executata  pentru fiecare inregistrare  candidata considarata de interogarea principala. Cu alte cuvinte, executia subinterogarii este dictata de  interogarea principala. Este utilizata oridecate ori  o  subinterogare trebuie sa intoarca diferite rezultate sau multimi de rezultate  pentru fiecare inregistrare  considerata de  interogarea principala.

 Sintaxa generala pentru subinterogarile corelate

SELECT col1, col2,...
    FROM  tabel1 alias1
    WHERE col i operator
                        ( SELECT  col1, col2,...
                            FROM tabel2
                            WHERE  expr1 = alias1.expr2)
In interogarile corelate se pot folosi  operatorii ANY si ALL.
Tipic, subinterogarile corelate se folosesc impreuna cu operatorul EXISTS.
Exemple