subconsultas bdd

Páginas: 5 (1159 palabras) Publicado: 27 de mayo de 2013
SUBCONSULTAS
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 podríamos consultar el alquiler último de un cliente.
SELECT CO_CLIENTE, NOMBRE, MARCA, MODDELO
 FROMALQUILERES
 WHERE CO_CLIENTE = 1
 AND   FECHA_ALQUILER = (SELECT MAX(FECHA_ALQUILER)
        FROM ALQUILERES
        WHERE CO_CLIENTE = 1)

Una subconsulta tiene la misma sintaxis que una sentencia SELECT normal exceptuando que aparece encerrada entre paréntesis.

La subconsulta se puede encontrar en la lista de selección, en la cláusula WHERE o en la cláusula HAVING de la consulta principal.Tiene las siguientes restricciones:

No puede contener la cláusula ORDER BY
No puede ser la UNION de varias sentencias SELECT
Si la subconsulta aparece en la lista de selección, o está asociada a un operador igual "=" solo puede devolver un único registro.

Referencias externas
Cuando se ejecuta una consulta que contiene una subconsulta con referencias externas, la subconsulta se ejecuta porcada fila de la consulta principal.

En este ejemplo la subconsulta aparece en la lista de selección, ejecutándose una vez por cada fila que devuelve la consulta principal.


SELECT CO_EMPLEADO,
NOMBRE,
(SELECT MIN(FECHA_NOMINA)
FROM NOMINAS
WHERE CO_EMPLEADO = EMPLEADOS.CO_EMPLEADO) PRIMERA_NOMINA
FROM EMPLEADOS;

Anidar subconsultas
Las subconsultas puedenanidarse 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')
Normalmente es más rápido utilizar un JOIN en lugar de una subconsulta, aunque esto depende sobre todo deldiseñ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.

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

La función EXISTS
EXISTS es una función SQL que devuelve verdadero cuando una subconsulta retorna al menos una fila.

SELECT  CO_CLIENTE,
    NOMBRE
 FROM CLIENTES
 WHERE EXISTS ( SELECT *
      FROM MOROSOS
      WHERE CO_CLIENTE = CLIENTES.CO_CLIENTE
        AND PAGADO = 'N') 
La función EXISTS puede ser utilizada en cualquier sentenciaSQL válida, SELECT, UPDATE, INSERT o DELETE.


OPERADORES ARITMÉTICOS

Los operadores aritméticos realizan operaciones matemáticas en dos expresiones de uno o más tipos de datos numéricos.
Los operadores aritméticos se pueden utilizar para realizar cualquier cálculo aritmético, como los siguientes:

Operador Significado
+ (Sumar) Suma
- (restar) Resta
* (Multiplicar) Multiplicación
/(Dividir) División
% (Módulo) Devuelve el resto entero de una división. Por ejemplo, 12 % 5 = 2 porque el resto de 12 dividido entre 5 es 2.

OPERADORES COMPUESTOS
Los operadores compuestos ejecutan una operación y establecen un valor original en el resultado de dicha operación. Por ejemplo, si una variable @x es igual a 35, @x += 2 toma el valor original de @x, suma 2 y establece @x en el...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • SUBCONSULTAS
  • Subconsultas
  • BDD
  • Bdd centralizadas vs bdd distribuidas
  • Redes Y Bdd
  • Temario de BDD
  • Subconsultas Mysql
  • subconsultas SQL

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS