Diferencia entre revisiones de «Plantilla:PHP/SQL subconsultas»
De WikiEducator
(→Qué es una subconsulta) |
(→Qué es una subconsulta) |
||
Línea 29: | Línea 29: | ||
Select job_id, job_name form JOBS where min_salary > 9000; | Select job_id, job_name form JOBS where min_salary > 9000; | ||
</source> | </source> | ||
− | + | ||
<source lang=sql> | <source lang=sql> | ||
Select job_id, job_title from JOBS where min_salary > select salary from EMPLOYEES where employee_id = 103; | Select job_id, job_title from JOBS where min_salary > select salary from EMPLOYEES where employee_id = 103; | ||
</source> | </source> | ||
− | + | ||
}} | }} | ||
;Reglas a la hora de usar una subconsulta | ;Reglas a la hora de usar una subconsulta | ||
Línea 47: | Línea 47: | ||
[[Archivo:img_subquery6.png|600px]] | [[Archivo:img_subquery6.png|600px]] | ||
{{MRM_Actividad|Title=Ejemplo| | {{MRM_Actividad|Title=Ejemplo| | ||
− | ;Mostrar los empleados, cuyo | + | ;Mostrar los empleados, cuyo manager_id (Es decir su encargado o jefe) sea el mismo que el mismo que tiene el empleado 141 |
− | + | ||
<source lang=php> | <source lang=php> | ||
select last_name, job_id | select last_name, job_id | ||
Línea 58: | Línea 58: | ||
</source> | </source> | ||
− | + | ||
}} | }} | ||
{{MRM_Actividad|Title=Ejemplo| | {{MRM_Actividad|Title=Ejemplo| | ||
− | ;Mostrar empleados (nombre, trabajo y salario) que trabajen en el mismo trabajo que trabaja Taylor y cobren más que el sueldo de Taylor | + | ;Mostrar empleados (nombre, trabajo y salario) que trabajen en el mismo trabajo (campo job_id) que trabaja Taylor y cobren más que el sueldo de Taylor |
− | + | ||
<source lang=php> | <source lang=php> | ||
select last_name, job_id, salary | select last_name, job_id, salary | ||
Línea 76: | Línea 76: | ||
WHERE last_name = 'Taylor'); | WHERE last_name = 'Taylor'); | ||
</source> | </source> | ||
− | + | ||
}} | }} | ||
;También la subconsulta puede retornar un valor resultado de una función de agrupación | ;También la subconsulta puede retornar un valor resultado de una función de agrupación |
Última revisión de 03:05 16 may 2018
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