tipos subconsultas ejemplos correlacionadas anidadas sql sql-server subquery correlated-subquery

subconsultas - subquery sql server ejemplos



Diferencia entre subconsulta y subconsulta correlacionada (7)

¿La siguiente pieza de SQL Query es una consulta normal o una subconsulta correlacionada?

SELECT UserID, FirstName, LastName, DOB, GFName, GLName, LoginName, LoginEffectiveDate, LoginExpiryDate, Password, Email, ReportingTo, Mobile, CommunicationPreference, IsActive FROM (SELECT row_number() OVER (ORDER BY FirstName) AS Row, UserID, FirstName, LastName, DOB, GFName, GLName, LoginName, LoginEffectiveDate, LoginExpiryDate, Password, Email, ReportingTo, Mobile, CommunicationPreference, IsActive FROM DivakarUserRegistration) T

Además, ¿alguien puede decir la diferencia entre ambos


Creo que la explicación a continuación te ayudará. Diferenciación entre ellos: la Correlated subquery es una consulta interna a la que hace referencia la consulta principal (consulta externa), de manera que la consulta interna se considera excutida repetidamente.

non-correlated subquery es una consulta secundaria que es independiente de la consulta externa y puede ejecutarse por sí misma sin depender de la consulta externa principal.

plain subquery no depende de la consulta externa,


El ejemplo anterior no es una subconsulta relacionada con Co. Es una tabla derivada / vista en línea, es decir, una subconsulta dentro de la cláusula FROM.

Una Subconsulta Corelated debe referir su Tabla principal (Query principal). Por ejemplo, vea buscar el N-máximo salario por Subconsulta relacionada con Co:

SELECT Salary FROM Employee E1 WHERE N-1 = (SELECT COUNT(*) FROM Employee E2 WHERE E1.salary <E2.Salary)

Co-Related Vs Nested-SubQueries.

La diferencia técnica entre la subconsulta normal y la subconsulta relacionada con Co es la siguiente:

1. Looping: bucle de subconsulta co-relacionado bajo consulta principal; mientras que anidado no; por lo tanto, la subconsulta co-relacionada se ejecuta en cada iteración de la consulta principal. Considerando que en el caso de la consulta anidada; la subconsulta se ejecuta primero y luego la consulta externa se ejecuta a continuación. Por lo tanto, el máximo no. de ejecuciones son NXM para subconsulta correlacionada y N + M para subconsulta.

2. Dependencia (interna a externa versus externa a interna): en el caso de la consulta secundaria relacionada, la consulta interna depende de la consulta externa para el procesamiento, mientras que en la consulta secundaria normal, la consulta externa depende de la consulta interna.

3. Rendimiento: el uso del rendimiento de la subconsulta relacionada con Co disminuye, ya que realiza iteraciones NXM en lugar de iteraciones N + M. ¨ Ejecución de subconsulta co-relacionada.

Para más información con ejemplos:

http://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-Sql-Sub-Queries-Nested-Co-related.html



SUBCERENCIAS CORRELADAS: se evalúa para cada fila procesada por la consulta principal. Ejecute la consulta interna en función del valor obtenido por la consulta externa. Continúa hasta que todos los valores devueltos por la consulta principal coincidan. La consulta interna es impulsada por la consulta externa

Ex:

SELECT empno,fname,sal,deptid FROM emp e WHERE sal=(SELECT AVG(sal) FROM emp WHERE deptid=e.deptid)

La subconsulta correlacionada calcula específicamente el AVG(sal) para cada departamento.

SUBQUERY: se ejecuta primero, se ejecuta una vez y devuelve los valores que utilizará la consulta principal. La consulta externa está dirigida por la consulta interna


Subconsulta correlacionada es una subconsulta que utiliza valores de la consulta externa. En este caso, la consulta interna debe ejecutarse para cada fila de consulta externa.

Vea el ejemplo aquí http://en.wikipedia.org/wiki/Correlated_subquery

La subconsulta simple no usa valores de la consulta externa y se calcula solo una vez:

SELECT id, first_name FROM student_details WHERE id IN (SELECT student_id FROM student_subjects WHERE subject= ''Science'');

Ejemplo de subconsulta relacionada con Co -

Consulta para buscar a todos los empleados cuyo salario sea superior al promedio para su departamento

SELECT employee_number, name FROM employees emp WHERE salary > ( SELECT AVG(salary) FROM employees WHERE department = emp.department);


Una subconsulta es una instrucción select que está incrustada en una cláusula de otra instrucción select.

EX:

select ename, sal from emp where sal > (select sal from emp where ename =''FORD'');

Una subconsulta correlacionada es una subconsulta que se evalúa una vez para cada fila procesada por la consulta externa o consulta principal. Ejecute la consulta interna en función del valor obtenido por la consulta externa. Todos los valores devueltos por la consulta principal coinciden. La consulta interna es impulsada por la consulta externa.

Ex:

select empno,sal,deptid from emp e where sal=(select avg(sal) from emp where deptid=e.deptid);

DIFERENCIA

La consulta interna se ejecuta primero y encuentra un valor, la consulta externa se ejecuta una vez usando el valor de la consulta interna (subconsulta)

Acceda a la consulta externa, ejecute la consulta interna usando el valor de la consulta externa, use los valores resultantes de la consulta interna para calificar o descalificar la consulta externa (correlacionada)

Para más información: http://www.plsqlinformation.com/2016/03/difference-between-subquery-and-correlated-subquery.html


cuando se trata de consultas de subconsulta y co-relacionadas, ambas tienen consulta interna y consulta externa, la única diferencia está en la subconsulta, la consulta interna no depende de la consulta externa, mientras que en la consulta interna co-relacionada depende de la externa.