Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SUBCONSULTAS
Subconsultas
Definicin y clasificaciones Donde emplearlas Condiciones de comparacin y subconsultas Ejemplos Definicin y clasificaciones
Una subconsulta es una instruccin SQL llamada desde otra instruccin o desde otra subconsulta. Las subconsultas pueden devolver varios conjuntos de resultados, pudindose clasificar basndose en estos conjuntos como: Una fila/una columna Mltiples filas/una nica columna Mltiples columnas/una nica o mltiples filas
Una subconsulta puede tener un formato regular o correlacionado. Subconsulta regular. Un consulta contenida dentro de otra sin que haya relacin entre ambas. Subconsulta correlacionadas: Correlacionado implica una conexin entre la consulta o subconsulta- que invoca la subconsulta y la propia subconsulta. Hay que tener en cuenta, que la columna correlacionada puede ser pasada de la consulta superior (la externa) a la inferior (la subconsulta interna) y NO al revs. La subconsulta correlacionada depende siempre de la consulta externa.
Las subconsultas pueden definirse tambin como anidadas o vistas en lnea. Subconsulta anidada: Las subconsultas pueden llamar a otras subconsultas, y estas a su vez a otras, as sucesivamente, sin limitacin. Subconsulta vista en lnea: Es una subconsulta embebida dentro de la clusula FROM de la instruccin SELECT que invoca la subconsulta.
Donde emplearlas
Las subconsultas pueden emplearse en casi todas las instrucciones SQL, en cualquier comando SQL donde se pueda emplear una expresin. El siguiente listado muestra las instrucciones SQL donde puede emplearse una subconsulta: Clusula SELECT Clusula WHERE Clusula ORDER BY Clusula FROM (vista en lnea)
CURSO 2005-06
19
SUBCONSULTAS
(subconsulta)
(subconsulta) {= | != } (subconsulta) (subconsulta) LIKE (subconsulta) (subconsulta)[NOT] IN (subconsulta) [NOT] EXIST (subconsulta) (subconsulta) BETWEEN (subconsulta) AND (subconsulta) (subconsulta) {= | != | > | < | >= | <= } {ANY | SOME | ALL}
Los operadores marcados, requieren subconsultas que devuelvan una nica fila, como son la igualdad/desigualdad, los operadores de comparacin (<,>,>=,<=), as como los operadores LIKE y BETWEEN. El resto de operadores permiten como resultado de la subconsulta mltiples filas: IN, NOT IN, EXIST, NOT EXIST, adems de los operadores de comparacin combinados con ANY, SOME o ALL. Una subconsulta en si misma, es generalmente equivalente sintcticamente a una instruccin SELECT.
Ejemplos:
A continuacin vamos a ver unos ejemplos de subconsultas:
20
CURSO 2005-06
S QL Ejemplos:
SELECT * FROM profesores WHERE poblacin IN (SELECT poblacin FROM estudiantes WHERE edad>25); SELECT * FROM estudiantes WHERE edad > ALL (SELECT edad FROM profesores WHERE dpto=Matemticas);
SUBCONSULTAS
Subconsultas correlacionadas:
Las subconsultas correlacionadas permiten la correlacin o coincidencia de valores entre las columnas de la consulta externa y la subconsulta. La consulta externa puede pasar el valor de una columna a la subconsulta, no siendo posible al revs. Las consultas se van ejecutando de izquierda a derecha y de arriba abajo. Las subconsultas internas se ejecutan antes que las invoquen las externas. Ejemplo:
SELECT nombre FROM estudiante E WHERE 01/01/02 > ALL (SELECT fecha_matricula FROM asigunaturas A WHERE A.nia=E.nia);
CURSO 2005-06
21
S QL
SUBCONSULTAS
Subconsultas anidadas:
Una subconsulta anidada es una subconsulta embebida dentro de otra subconsulta. Ejemplo:
SELECT nombre, apellidos FROM estudiante E WHERE nia IN (SELECT nia FROM matricula WHERE codasig IN (SELECT codasig FROM asignaturas GROUP BY codasig HAVING COUNT(DISTINCT nia)>100));
WHERE Aux.codigo=facturas.codfac)
22
CURSO 2005-06