Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Subconsultas
Subconsultas
SUBCONSULTAS
Para cada oficina, la consulta interna (Subconsulta) calcula la suma de las cuotas
para los vendedores que trabajan en esa oficina. La consulta externa (consulta
principal) Compara el objetivo de la Oficina con el total calculado y decide si añadir
la oficina a los resultados de la consulta principal.
1
Test de Comparación Subconsulta:
Ejemplo adicional: Listar todos los clientes atendidos por Bill Adams
Compara un único valor de datos con una columna de valores producida por una
subconsulta y devuelve el resultado TRUE si el valor coincide con uno de los valores
de la columna.
Este test se utiliza cuando se necesita comparar un valor de la fila que está siendo
examinada con un conjunto de valores producidos por una subconsulta.
Formato:
Ejemplo: Mostrar los vendedores que trabajan en Oficinas que superen su objetivo
Mostrar los vendedores que no trabajan en oficinas dirigidas por Larry Fitch
(empleado 108)
Select Num_empl, Nombre FROM REPVENTAS
WHERE Oficina_rep NOT IN (Select Oficina
FROM OFICINAS
WHERE Dir = 108)
2
Test de Existencia (EXISTS):
Mostrar las Oficinas en donde haya un vendedor cuya cuota representa más del
55% del objetivo de la oficina:
Select Ciudad FROM OFICINAS
WHERE EXISTS (Select * FROM Repventas
WHERE Oficina_rep = Oficina
AND Cuota > (.55 * Objetivo))
Opción ANY: con el operador se compara un único valor de test con una columna
de valores producidos por una subconsulta, uno cada vez. Si alguna de las
comparaciones individuales produce un resultado TRUE, el test ANY devuelve el
resultado TRUE.
3
Ejemplo: Mostrar los vendedores que hayan aceptado un pedido que represente
más del 10% de su cuota.
Select Num_empl, Nombre FROM Repventas
WHERE (.1 * Cuota) < Any (Select Importe
FROM PEDIDOS
WHERE Rep = Num_Empl).
Opción All: se utiliza idéntico al ANY con uno de los seis operadores de
comparación SQL, para comparar un único valor de test con una columna de valores
de datos producidos por una subconsultas. Si todas las comparaciones individuales
producen un resultado TRUE, el test ALL devuelve un resultado TRUE.
Ejemplo: Mostrar las Oficinas y sus objetivos en donde todos los vendedores
tienen ventas que superan al 50% del objetivo de la Oficina.
ANIDAMIENTO DE SUBCONSULTAS
Se pueden anidar varias subconsultas, los niveles depende de la versión del motor
de base de datos. Al usarse subconsultas anidadas el nivel de su compresión es
alto.
SUBCONSULTAS Y COMPOSICIONES
Es dependiente del problema que las consultas con subconsultas se pueden
expresar en forma equivalente a consulta multitabla, como también hay casos que
no se pueden expresar equivalentemente.
Ejemplo: Mostrar los nombres y edades de los vendedores que trabajan en oficinas
de la región Oeste
4
Da el mismo resultado en expresar como:
Como también hay muchas consultas con subconsultas que no pueden ser
traducidas a una composición equivalente, como:
Mostrar los nombres y edades de los vendedores que tienen cuotas por encima del
promedio.
SUBCONSULTAS CORRELACIONADAS
Ejemplo: Mostrar las oficinas cuyos objetivos exceden a la suma de las cuotas de
los vendedores que trabajan en ellas.
Nota: Esta separata ha sido elaborada con la referencia del libro Aplique SQL de James R. Groff y Paul N.
Weinberg.