Diferencia entre revisiones de «Plantilla:PHP/SQL subconsultas»
De WikiEducator
(Página creada con «===Qué es una subconsulta=== <br /> {{MRM_Deficiion|Title=Qué es una subconsulta| ;Es una consulta que realizamos dentro de otra con el objetivo de obtener uno o varios v...») |
|||
| Línea 1: | Línea 1: | ||
===Qué es una subconsulta=== | ===Qué es una subconsulta=== | ||
<br /> | <br /> | ||
| − | {{ | + | {{MRM_Definicion|Title=Qué es una subconsulta| |
;Es una consulta que realizamos dentro de otra con el objetivo de obtener uno o varios valores que necesitamos en la consulta principal para comparar valores | ;Es una consulta que realizamos dentro de otra con el objetivo de obtener uno o varios valores que necesitamos en la consulta principal para comparar valores | ||
}} | }} | ||
| − | Miramos el siguiente ejemplo | + | *Miramos el siguiente ejemplo |
| + | <br /> | ||
[[Archivo:img_subquery1.png]] | [[Archivo:img_subquery1.png]] | ||
| + | <hr /> | ||
;Estructura de una subconsulta | ;Estructura de una subconsulta | ||
*La subconsulta o consulta interna se ejecuta antes que la consulta principal | *La subconsulta o consulta interna se ejecuta antes que la consulta principal | ||
| + | <br /> | ||
[[Archivo:img_subquery2.png]] | [[Archivo:img_subquery2.png]] | ||
| + | <hr /> | ||
*En el ejemplo anterior la consulta quedaría | *En el ejemplo anterior la consulta quedaría | ||
| + | <br /> | ||
[[Archivo:img_subquery2.png]] | [[Archivo:img_subquery2.png]] | ||
| + | <hr /> | ||
{{MRM_Actividad|Title=Ejemplo| | {{MRM_Actividad|Title=Ejemplo| | ||
| + | Obtener todos los trabajos (tabla JOBS) | ||
| + | cuyo salario min sea mayor que el salario | ||
| + | del trabajador cuyo id es 103 | ||
| + | *Si lo hiciéramos sin subconsultas primero obtendríamos el sueldo del empleado 103 | ||
| + | <source lang=sql> | ||
| + | SELECT SALARY FROM EMPLOYEES WHERE EMPLOYEE_ID = 103; | ||
| + | </source> | ||
| + | *Y luego usaríamos ese valor para obetener los trabajos que nos interesan | ||
| + | <source lang=sql> | ||
| + | Select job_id, job_name form JOBS where min_salary > 9000; | ||
| + | </source> | ||
| + | <!-- | ||
| + | <source lang=sql> | ||
| + | Select job_id, job_title from JOBS where min_salary > select salary from EMPLOYEES where employee_id = 103; | ||
| + | </source> | ||
| + | --> | ||
| + | }} | ||
| + | ;Reglas a la hora de usar una subconsulta | ||
| + | [[Archivo:img_subquery4.png]] | ||
| + | ;Tenemos dos tipos de subconsultas | ||
| + | #Subconsultas que devuelven una sola fila | ||
| + | #Subconsultas que devuelven varias filas | ||
| + | [[Archivo:img_subquery5.png]] | ||
| + | *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 | ||
| + | [[Archivo:img_subquery5.png]] | ||
| + | {{MRM_Actividad|Title=Ejemplo| | ||
| + | ;Mostrar los empleados, cuyo id de cargo sea el mismo que el del empleado 141 | ||
| + | <!-- | ||
| + | <source lang=php> | ||
| + | select last_name, job_id | ||
| + | from EMPLOYEES | ||
| + | where job_id = | ||
| + | (SELECT JOB_ID | ||
| + | FROM EMPLOYEES | ||
| + | WHERE EMPLOYEE_ID = 141); | ||
| + | |||
| + | </source> | ||
| + | --> | ||
| + | }} | ||
| + | {{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 | ||
| + | <!-- | ||
| + | <source lang=php> | ||
| + | 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'); | ||
| + | </source> | ||
| + | --> | ||
| + | }} | ||
| + | ;También la subconsulta puede retornar un valor resultado de una función de agrupación | ||
| + | {{MRM_Actividad|Title=Ejemplo| | ||
| + | ;Mostrar empleados (nombre, trabajo y salario) que cobren más que la media que se cobra en la empresa | ||
| + | <!-- | ||
| + | <source lang=php> | ||
| + | select last_name, job_id, salary | ||
| + | from EMPLOYEES | ||
| + | where salary > (select avg(salary) | ||
| + | from EMPLOYEES); | ||
| + | </source> | ||
| + | --> | ||
}} | }} | ||
Revisión de 09:38 15 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;
|
- 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
- También la subconsulta puede retornar un valor resultado de una función de agrupación



