Blogia
MeSeminary

Subconsultas

DEFINICION:

 

Una subconsulta es una sentencia SELECT que aparece dentro de otra sentencia SELECT. Normalmente se utilizan para filtrar una clausula WHERE o HAVING con el conjunto de resultados de la subconsulta, aunque también pueden utilizarse en la lista de selección.

Por ejemplo podriamos consultar el alquirer último de un cliente.

 

 

Sintaxis de una subconsulta

  • La subconsulta se ejecuta una vez y antes de la consulta principal.
  • El resultado de ella es usado por la consulta principal externa.

Anidar subconsultas 
 
    Las subconsultas pueden anidarse de forma que una subconsulta aparezca en la cláusula WHERE (por ejemplo) de otra subconsulta que a su vez forma parte de otra consulta principal. 

 


 SELECT  CO_EMPLEADO,
   EMPLEADOS
 FROM EMPLEADOS
 WHERE CO_EMPLEADO IN (SELECT CO_EMPLEADO
        FROM NOMINAS
        WHERE ESTADO  IN ( SELECT ESTADO
            FROM ESTADOS_NOMINAS
            WHERE EMITIDO = 'S'
              AND PAGADO = 'N')
       )

 

    Los resultados que se obtienen con subconsultas normalmente pueden conseguirse a través de consultas combinadas ( JOIN ).

 


 SELECT  CO_EMPLEADO,
    NOMBRE
 FROM EMPLEADOS
 WHERE ESTADO IN (SELECT ESTADO
      FROM ESTADOS
      WHERE ACTIVO = 'S')

 

    Podrá escribirse como :

 


 SELECT  CO_EMPLEADO,
    NOMBRE
 FROM EMPLEADOS, ESTADOS
 WHERE EMPLEADOS.ESTADO = ESTADOS.ESTADO
   AND ESTADOS.ACTIVO = 'S' 

 

    Normalmente es más rápido utilizar un JOIN en lugar de una subconsulta, aunque esto depende sobre todo del diseño de la base de datos y del volumen de datos que tenga.

 Utilizacion de subconsultas con UPDATE
 
    Podemos utilizar subconsultas también en consultas de actualización conjuntamente con UPDATE. Normalmente se utilizan para "copiar" el valor de otra tabla.

 


 UPDATE  EMPLEADOS
  SET SALARIO_BRUTO = (SELECT SUM(SALIRO_BRUTO)
        FROM NOMINAS
        WHERE NOMINAS.CO_EMPLEADO = EMPLEADOS.CO_EMPLEADO)
 WHERE SALARIO_BRUTO IS NULL

 

 

Ejemplo subc. Multi-registro



Subcons. en cláusula FROM

  • Puede utilizar una subconsulta en una cláusula FROM de una sentencia SELECT:

  • Este ejemplo muestra los nombres, salarios, núm. Departamentos y media de salarios, de todos los empleados que cobran más que la media de salarios de su departamento.


 

 

0 comentarios