Ir al contenido principal

Entradas

Mostrando entradas de septiembre 3, 2013

Resumen

Un Subquery es una consulta embebida dentro de otra Sentencia SQL. Esta sentencia puede ser otra consulta o una sentencia DML. Los Subquerys pueden ser anidados dentro de otros sin límites prácticos. También puede ser utilizado en la clausula WHERE y la clausula HAVING  con los operadores de comparación =,>,<,>=,<=,<> y IN, NOT IN, ALL y ANY. Los Subquerys pueden er utilizados para generar valores para la lista SELECT de una consulta, para generar una vista inline para ser utilizadas en la clausula FROM. En la clausula WHERE Los Subquerys tienen tres formas: Single-Row, Multiple-Row y Correlacionados. Un caso especial del Subquery Single-Row es el Subquery Scalar, es un Subquery que devuelve exactamente un valor.

Subquerys Correlacionados.

Un Subqyuery Correlacionado tiene un método más complejo de ejecución que un Subquery Single-Row y un Multiple-Row y es potencialmente más poderoso. Si un Subquery hace referencia a columnas de la consulta padre, entonces el resultado será dependiente de la consulta padre. Esto hace imposible evaluar el subquery antes  de la evaluación de la consulta padre. El Subquery Single-Row necesita ser ejecutado solo una vez, y el resultado es sustituido en la consulta padre. Pero ahora considere una consulta que desplegara todos los empleados que su salario es menor que el salario promedio de su departamento. En este caso, el subquery debe ser ejecutado por cada empleado para determinar el promedio de salario de su departamento; es necesario pasar el id de departamento al subquery. Esto puede ser realizado como sigue: SELECT e1.employee_id,        e1.first_name,        e1.last_name,        e1.department_id,        e1.salary,        (SELECT ROUND(AVG(e2.salary)) FROM employees e

Tipos de Subquerys

Existen tresn amplias divisiones de subquerys: Subquery Single-Row. Subquery Multiples-Row. Subquerys Correlacionados. Subquery Single-Row y Multiple-Row El subquery Single-Row devuelve una fila. Un caso especial es el Subquery Escalar que devuelve una sola fila con una columna. Los Subquerys Escalares son aceptables en situaciones que puede usar valores literales, una constante o una expresión. El subquery Multiple-Row devuelve un conjunto de filas. Estas consultas son comúnmente utilizadas para generar un conjunto de resultados que serán pasados a un DML o una sentencia SELECT. Los Subquerys Single-Row y Multiple_Row son evaluados antes que el query padre sea ejecutado. Los Subquerys Single-Row y Multiple-Row pueden ser usados en las clausulas WHERE y HAVING de la consulta padre, pero hay restricciones con los operadores de comparación. Operadores Validos para Subquerys Single-Row: Símbolo Meaning = Igual &