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:
En una consulta SQL, si la consulta interna se ejecuta para cada fila de la consulta externa. Si la consulta interna se ejecuta por una vez y la consulta externa consume el resultado, entonces se llama como consulta no relacionada.
Las subconsultas correlacionadas normalmente corresponden a las consultas de combinación normales, es decir, a las consultas de combinación que no tienen consultas secundarias y, por lo general, se pueden expresar como tales. A veces se recomienda que se traduzcan en tales consultas de combinación, porque la mayoría de los DBMS SQL los ejecutarán ...
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.