A seguinte peça de SQL Query é uma consulta normal ou uma Subconsulta Correlata ??
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
Além disso, alguém pode afirmar a diferença entre os dois
O exemplo acima não é Sub-Pergunta co-relacionada. É uma Tabela Derivada / Inline-View uma vez que, isto é, uma Subconsulta dentro da Cláusula FROM.
Uma Subconsulta Correlata deve consultar a sua tabela pai(consulta principal) na mesma. Por exemplo Veja o Nth max salary by Co-related Sub-query:
SELECT Salary
FROM Employee E1
WHERE N-1 = (SELECT COUNT(*)
FROM Employee E2
WHERE E1.salary <E2.Salary)
Co-Related Vs Nested-SubQueries.
As diferenças técnicas entre a Subconsulta Normal e a Subconsulta Co-relacionada são:
1. Looping: Laço de subconsulta relacionada sob consulta principal; enquanto não aninhada; portanto, a subconsulta co-relacionada executa em cada iteração da consulta principal. Enquanto que no caso de Nested-query; subquery executa primeiro a consulta externa executa depois a consulta externa. Portanto, o número máximo de execuções é NXM para subconsultas correlacionadas e N+M para subconsultas.
2. Dependência(Interno para Externo vs Externo para Interno): No caso de subconsulta co-relacionada, a consulta interna depende da consulta externa para processamento enquanto que na subconsulta normal, a consulta externa depende da consulta interna.
3.Performance: O uso de subconsultas co-relacionadas diminui o desempenho, pois executa iterações NXM ao invés de iterações N+M. ¨ Execução de subconsultas co-relacionadas.
Para mais informações com exemplos :
A Subconsulta relacionada é uma subconsulta que utiliza valores da consulta externa. Neste caso, a consulta interna tem de ser executada para cada linha da consulta externa.
Veja o exemplo aqui http://en.wikipedia.org/wiki/Correlated_subquery
A subconsulta simples não'não usa valores da consulta externa e está sendo calculada apenas uma vez:
SELECT id, first_name
FROM student_details
WHERE id IN (SELECT student_id
FROM student_subjects
WHERE subject= 'Science');
**Exemplo de Subconsultas relacionadas -***
Consulta Para encontrar todos os funcionários cujo salário esteja acima da média para o seu departamento
SELECT employee_number, name
FROM employees emp
WHERE salary > (
SELECT AVG(salary)
FROM employees
WHERE department = emp.department);
Acho que as explicações abaixo vão ajudar-te... a diferenciação entre eles: "Subconsulta relacionada a uma subconsulta" é uma consulta interna referenciada pela consulta principal (consulta externa) de tal forma que a consulta interna é considerada como sendo excutada repetidamente.
A "subconsulta não-correlacionada" é uma subconsulta que é independente da consulta externa e pode ser executada sobre ela's próprios sem depender da consulta externa principal.
A "subconsulta de planície" não depende da consulta externa,