Usuario:ManuelRomero/ProgramacionWeb/INAEM2017/BasesDatos/SQL/DML Subconsultas
De WikiEducator
Qué es una subconsulta
|
- Miramos el siguiente ejemplo
- Estructura de una subconsulta
- La subconsulta o consulta interna se ejecuta antes que la consulta principal
- En el ejemplo anterior la consulta quedaría
|
Obtener todos los trabajos (tabla JOBS) cuyo salario min sea mayor que el salario del trabajador cuyo id es 103
SELECT SALARY FROM EMPLOYEES WHERE EMPLOYEE_ID = 103;
SELECT job_id, job_name form JOBS WHERE min_salary > 9000; SELECT job_id, job_title FROM JOBS WHERE min_salary > SELECT salary FROM EMPLOYEES WHERE employee_id = 103;
|
- Reglas a la hora de usar una subconsulta
- Tenemos dos tipos de subconsultas
- Subconsultas que devuelven una sola fila
- Subconsultas que devuelven varias filas
- Los operadores de comparación serán diferentes según estemos en un caso u otro
- Es totalmente lógico, no es lo mismo comparar salario con un valor, que con un conjunto de valores
- Subconsutlas que devuelven una fila
- Este tipo de subconsulta utiliza operadores de una sola fila
select last_name, job_id, salary from EMPLOYEES where job_id = (SELECT JOB_ID FROM EMPLOYEES WHERE last_name = 'Taylor') and salary > (SELECT salary FROM EMPLOYEES WHERE last_name = 'Taylor');
|
- También la subconsulta puede retornar un valor resultado de una función de agrupación
- subconsulta puede retornar un valor resultado de una agrupación (GROUP BY)
- Subconsutlas que devuelven varias fila
- Este tipo de subconsulta utiliza operadores de varias filas (in, any, all)
- Operador ANY
- Este operador tiene el significado de para cada uno, es decir compara con cada uno de los valores
- va acompañado de =, >, >
- Es como hacer un OR lógico
- Operador ALL
- Este operador compara el valor con todos y cada uno de los valores.
- Sería como hacer un AND lógico
- >ALL es como > que el máximo
- <ALL es como < que el mínimo

