Anda di halaman 1dari 8

RESUMEN GRUPO 9 SUBCONSULTAS QU ES UNA SUBCONSULTA?

Una sub consulta es una sentencia SELECT que es incrustada en otra clusula de otra sentencia SELECT. Se puede poner una sub consulta en un nmero de clusulas SQL, incluyendo: La clusula WHERE La clusula HAVING La clusula FROM La sub consulta generalmente se ejecuta primero, y este es usado para completar la condicin de la consulta principal o consulta externa.

Sintaxis de cmo se realiza una subconsulta Una subconsulta tiene la misma sintaxis que una sentencia SELECT normal exceptuando que aparece encerrada entre parntesis, no puede contener la clusula ORDER BY, ni puede ser la UNION de varias sentencias SELECT, adems tiene algunas restricciones en cuanto a nmero de columnas segn el lugar donde aparece en la consulta principal. Cuando se ejecuta una consulta que contiene una subconsulta, la subconsulta se ejecuta por cada fila de la consulta principal .

Referencia Externa Una referencia subconsulta, no en la FROM de designadas en externa es un nombre de columna que estando en la se refiere a ninguna columna de las tablas designadas la subconsulta sino a una columna de las tablas la FROM de la consulta principal.

Ejemplo: SELECT numemp, nombre, (SELECT MIN(fechapedido) FROM pedidos WHERE rep = numemp) FROM empleados;

Anidar subconsultas Las subconsultas pueden anidarse de forma que una subconsulta aparezca en la clusula WHERE (por ejemplo) de otra subconsulta que a su vez forma parte de otra consulta principal. Ejemplo: SELECT numemp, nombre FROM empleados WHERE numemp = (SELECT rep FROM pedidos WHERE clie = (SELECT numclie FROM clientes WHERE nombre = 'Julia Antequera'))

Tipos de Subconsultas

Sub consultas de lnea nica: Consultas que obtienen solamente una fila de una sentencia SELECT interna. Sub consultas de mltiples lneas: Consultas que obtienen ms de una fila de una sentencia SELECT interna.

Nota: Hay tambin sub consultas de mltiples columnas: Consultas que obtienen ms de una columna de una sentencia SELECT interna.

Subconsultas de registros simples Una sub consulta de lnea nica es aquella que obtiene una fila de la sentencia SELECT interna. Este tipo de sub consultas usan operadores de lnea nica.

EJEMPLOS:

Subconsultas de registros mltiples Las sub consultas que retornan ms de una fila son llamadas sub consultas de mltiples filas. Se usan operadores de mltiples filas, en lugar de operadores de lnea nica, con sub consultas de mltiples filas. El operador de mltiples filas espera uno o ms valores. Utiliza operadores de comparacin de mltiples filas IN, ANY, ALL.

Operadores de las subconsultas de multiples registros. IN: Se emplea para recuperar nicamente aquellos registros de la consulta principal para los que algunos registros de la subconsulta contienen un valor igual. ALL: Se utiliza para comparar aquellos registros de la consulta principal con todos los registros de la subconsulta. > ALL significa mas que el mximo < ALL significa menos que el mnimo. ANY / SOME: compara un valor para cada valor obtenido por la sub consulta. < ANY significa menos que el mximo. > ANY significa ms que el mnimo. = ANY es equivalente al operador IN. < ALL significa menos que el mximo. > ALL significa ms que el mnimo. El operador NOT puede utilizarse con los operadores IN, ANY y ALL.

Subconsultas de clusulas HAVING Se suele utilizar subconsultas en las clusulas WHERE o HAVING cuando los datos que queremos visualizar estn en una tabla pero para seleccionar las filas de esa tabla necesitamos un dato que est en otra tabla. El servidor Oracle ejecuta la sub consulta, y los resultados son regresados a la clusula HAVING de la consulta principal. En una clusula WHERE / HAVING tenemos siempre una condicin y la subconsulta acta de operando dentro de esa condicin.

EJEMPLO DE LA SUBCONSULTA HAVING:

La sentencia SQL de la imagen anterior despliega todos los departamentos que tienen un salario mnimo mayor que el departamento 50.

EJERCICIOS

Listar los nombres de los clientes que tienen asignado el representante Alvaro Jaumes (suponiendo que no pueden haber representantes con el mismo nombre).
SELECT nombre FROM clientes WHERE repclie = (SELECT numemp FROM empleados WHERE nombre = 'Alvaro Jaumes' );
Hemos supuesto que no pueden haber dos empleados con el mismo nombre, de lo contrario habra que aadir ANY antes de la subconsulta.

Listar las oficinas que tengan un objetivo mayor que la suma de las cuotas de sus vendedores.
SELECT * FROM oficinas WHERE objetivo > ( SELECT SUM(cuota) FROM empleados WHERE empleados.oficina = oficinas.oficina);

Anda mungkin juga menyukai