Anda di halaman 1dari 19

Advanced Subqueries

Lesson18

Qu es una Subquery?
Una subconsulta es una instruccin SELECT incrustado en una clusula de otra sentencia SQL, llamada declaracin padre .

Subconsultas
Las Subconsultas son utilizadas para los siguientes propsitos: Para proveer valores para las condiciones WHERE, HAVING, and START WITH Clausulas de SELECT.

Para definir el grupo de filas que sern insertadas en el objetivo de la tabla


Para definir el grupo de filas que sern incluidas en una vista en una CREATE VIEW Para definir uno o mas valores que sern asignados a una fila existente en una declaracin UPDATE Para definir una tabla que ser operada en una continua consulta

Subconsultas

*La subconsulta (consulta interna) realiza antes la consulta principal. * El resultado de la subconsulta es utilizado por las principales consulta (consulta externa).

Las Subconsultas pueden ser muy til cuando se necesita para seleccionar filas de una tabla con una condicin que depende de los datos de la tabla. Las Subconsultas son muy tiles para escribir sentencias SQL que requieren valores sobre la base de uno o ms valores condicionales desconocidos.

La subconsulta se conoce como una instruccin SELECT SELECT, sub-SELECT, o interior anidada a menudo. Las consultas internas y externas pueden recuperar datos de ya sea la misma tabla o de diferentes tablas.

Usando una subconsulta:


En el ejemplo de la diapositiva, la consulta interna devuelve el sueldo del empleado cuyo nmero de empleado149. La consulta externa utiliza el resultado de la consulta interna para mostrar los nombres de todos los empleados que ganar ms de esta cantidad. Ejemplo: Muestra los nombres de todos los empleados que ganan menos que el salario medio en la empresa.
SELECT last_name, job_id, salary FROM employees WHERE salary < (SELECT AVG(salary) FROM employees);

Subconsultas de mltiples columnas

Cada fila de la consulta principal se compara con valores de una de varias filas y columnas mltiples subconsulta.

Subconsultas de mltiples columnas:


Si desea comparar dos o ms columnas, debe escribir una clusula WHERE compuesta mediante operadores lgicos. Usando Subconsultas de varias columnas, puede combinar duplicados WHERE condiciones en una sola clusula WHERE.
Sintaxis: SELECT column, column, ... FROM table WHERE (column, column, ...) IN (SELECT column, column, ... FROM table WHERE condition);

Comparaciones de columnas
Comparaciones de columna en una subconsulta de varias columnas puede ser:

Las comparaciones por pares comparaciones no par

Comparaciones de Pares con Impares


En el ejemplo de la diapositiva siguiente, una comparacin por pares fue ejecutado en la clusula WHERE. cada fila candidata en la instruccin SELECT debe tener tanto la misma columna MANAGER_ID y la Department_id como el empleado con el EMPLOYEE_ID 178 o 174.

Una sub consulta de mltiples columnas puede ser tambin una comparacin no par. En una comparacin no par, cada una de las columnas de la clusula WHERE de la sentencia SELECT padres son individualmente en comparacin con mltiples valores recuperados por la sentencia SELECT interna.

Comparaciones de Pares con Impares

Las columnas individuales pueden igualar cualquiera de los valores recuperados por la sentencia SELECT interna. Pero en conjunto, todas las mltiples condiciones de la instruccin principal SELECT debe estar convencido para que se muestre la fila. El ejemplo de la siguiente pgina muestra una comparacin no par.

Pares subconsulta Comparacin Mostrar los detalles de los empleados que se manejan por el mismo director y el trabajo en el mismo departamento como los empleados con EMPLOYEE_ID 178 174.

Comparacin de Subconsultas Pares


El ejemplo de la diapositiva es de una subconsulta de mltiples columnas porque la subconsulta se hace de una columna. Se comparan los valores en la columna y la columna MANAGER_ID DEPARTMENT_ID de cada fila de la tabla de empleados con los valores de la columna MANAGER_ID y la Columna DEPARTMENT_ID para los empleados con el EMPLOYEE_ID 178 174. Primero, la subconsulta para recuperar los valores MANAGER_ID y DEPARTMENT_ID para los empleados EMPLOYEE_ID 178 174 se ejecuta. Estos valores se comparan con la columna MANAGER_ID y la columna DEPARTMENT_ID de cada fila de la tabla EMPLEADOS. Si los valores coinciden, se muestra la fila. En la salida, los registros de los empleados con la EMPLOYEE_ID 178 174no se mostrar.

Comparacin de Consultas Impares


Mostrar los detalles de los empleados que son gestionados por el mismo administrador que los empleados con EMPLOYEE_ID 174 141 y el trabajo en el mismo departamento que el empleados con EMPLOYEE_ID 174 o 141.

Anda mungkin juga menyukai