logo

Subconsultes relacionades amb SQL

A SQL, una subconsulta correlacionada és una subconsulta que fa referència a una columna de la consulta externa. La subconsulta s'executa repetidament per a cada fila de la consulta externa, utilitzant els valors de la fila actual per realitzar la subconsulta. El resultat de la subconsulta s'utilitza llavors en l'avaluació de la consulta externa.

Les subconsultes correlacionades s'utilitzen per al processament fila per fila. Cada subconsulta s'executa una vegada per cada fila de la consulta externa.



Una subconsulta correlacionada s'avalua una vegada per a cada fila processada per la instrucció principal. La declaració dels pares pot ser a SELECCIONA , ACTUALITZACIÓ , o ELIMINAR declaració.

Sintaxi:

SELECCIONA columna1, columna2, ….

DE la taula 1 exterior



WHERE operador columna1

(SELECT columna1, columna2

DE LA taula 2



ON expr1 =

exterior.expr2);

Una subconsulta correlacionada és una manera de llegir cada fila d'una taula i comparar els valors de cada fila amb les dades relacionades. S'utilitza sempre que una subconsulta ha de retornar un resultat o conjunt de resultats diferent per a cada fila candidata considerada per la consulta principal. En altres paraules, podeu utilitzar una subconsulta correlacionada per respondre una pregunta de diverses parts la resposta de la qual depèn del valor de cada fila processada per la instrucció principal.

Subconsultes imbricades versus subconsultes correlacionades

Amb una subconsulta imbricada normal, l'interior SELECCIONA La consulta s'executa primer i s'executa una vegada, retornant els valors que ha d'utilitzar la consulta principal. Tanmateix, una subconsulta correlacionada s'executa una vegada per a cada fila candidata considerada per la consulta externa. En altres paraules, la consulta interna és impulsada per la consulta externa.

NOTA: També podeu utilitzar el CAP i TOTS operador en una subconsulta correlacionada. EXEMPLE de subconsultes correlacionades: Trobeu tots els empleats que guanyen més del salari mitjà del seu departament.

Consulta:

SELECT last_name, salary, department_id  FROM employees outer  WHERE salary>(SELECT AVG(salari) FROM empleats WHERE Department_id = outer.department_id group by department_id);>>> 

Un altre ús de la correlació està en ACTUALITZACIÓ i ELIMINAR

ACTUALITZACIÓ CORRELACIONADA

Utilitzeu una subconsulta correlacionada per actualitzar les files d'una taula en funció de les files d'una altra taula.

ELIMINAR CORRELACIONATS

DELETE FROM table1 alias1  WHERE column1 operator  (SELECT expression  FROM table2 alias2  WHERE alias1.column = alias2.column);>

Utilitzeu una subconsulta correlacionada per suprimir files d'una taula en funció de les files d'una altra taula.

descarregar youtube vlc media player

Utilitzant l'operador EXISTS

L'operador EXISTS prova l'existència de files al conjunt de resultats de la subconsulta. Si es troba un valor de fila de subconsulta, la condició es marca VERITAT i la cerca no continua a la consulta interna i, si no es troba, es marca la condició FALS i la cerca continua a la consulta interna.
EXEMPLE d'utilitzar l'operador EXIST:
Trobeu empleats que tinguin almenys una persona que els declari.

Consulta:

SELECT employee_id, last_name, job_id, department_id FROM employees outer WHERE EXISTS ( SELECT ’X’ FROM employees WHERE manager_id = outer.employee_id);>

SORTIDA:

EXEMPLE d'utilitzar l'operador NO EXIST
Cerqueu tots els departaments que no tinguin empleats.

Consulta:

SELECT department_id, department_name FROM departments d WHERE NOT EXISTS (SELECT ’X’ FROM employees WHERE department_id = d.department_id);>

SORTIDA:

Preguntes freqüents sobre subconsultes correlacionades amb SQL - Preguntes freqüents

Quina diferència hi ha entre les subconsultes correlacionades i les subconsultes normals?

Les subconsultes regulars (no correlacionades) són independents de la consulta externa i només s'avaluen una vegada abans que s'executi la consulta principal. En canvi, les subconsultes correlacionades depenen de la consulta externa i s'executen per a cada fila de la consulta principal.

Quan he d'utilitzar subconsultes correlacionades?

Les subconsultes correlacionades són útils quan necessiteu filtrar el resultat de la consulta externa en funció d'alguna condició que requereixi valors de referència de la consulta externa. S'utilitzen habitualment en escenaris on la condició es basa en dades de taules relacionades.