CORRELATED SUBQUERY
Correlated Subquery è una query integrata con una outer (o parent) query cioè include riferimenti ad elementi della query padre e pertanto non può essere eseguita da sola.
La correlazione avviene tramite una relazione di almeno una colonna della tabella padre e di una colonna della subquery, all'interno della subquery stessa.
Correlated subqueries può essere utilizzato nelle istruzioni SELECT, UPDATE e DELETE.
Gli step eseguiti dal server Oracle per valutare una Correlated Subquey sono i seguenti:
SELECT FIRST_NAME, LAST_NAME , JOB_ID , SALARY
FROM employees E
WHERE SALARY =
( SELECT AVG(min_salary)
FROM jobs J
WHERE J.job_id = E.job_id
);
Una NON-CORRELATED SUBQUERY può essere definita come un insieme di query in sequenza in cui il risultato della inner query è utilizzato come valore di ricerca dalla outer query.
La correlazione avviene tramite una relazione di almeno una colonna della tabella padre e di una colonna della subquery, all'interno della subquery stessa.
Correlated subqueries può essere utilizzato nelle istruzioni SELECT, UPDATE e DELETE.
Gli step eseguiti dal server Oracle per valutare una Correlated Subquey sono i seguenti:
- vengono estratte le opportune righe dalla outer query;
- ogni riga è utilizzata nella subquery, nella correlazione tra le colonne, e vengono restituite le righe dalla subquery;
- le suddette righe vengono utilizzate dalla clausola WHERE della outer query;
- la procedura è ripetuta per tutte le righe della tabella outer, finché tutte le righe sono processate.
SELECT FIRST_NAME, LAST_NAME , JOB_ID , SALARY
FROM employees E
WHERE SALARY =
( SELECT AVG(min_salary)
FROM jobs J
WHERE J.job_id = E.job_id
);
Una NON-CORRELATED SUBQUERY può essere definita come un insieme di query in sequenza in cui il risultato della inner query è utilizzato come valore di ricerca dalla outer query.