Академический Документы
Профессиональный Документы
Культура Документы
Resolver Consultas
O RACLE
Copyright © 2004. O racle. Todos los derechos reservados.
Objetivos
O RACLE
Copyright © 2004. Oracle. Todos los derechos reservados.
Objetivos
En esta lección, obtendrá información sobre funciones más avanzadas de la sentencia
SELECT. Puede escribir subconsultas en la cláusula WHERE de otra sentencia SQL para
obtener valores basados en iui valor condicional desconocido. Esta lección trata subconsultas
de una sola fila y subconsultas de varias filas.
Consulta principal:
Subconsulta:
O RACLE
Copyright © 2004. Oracle. Todos los derechos reservados.
SELECT selectlist
FROM taJble
WHERE expr operator
(SELECT select_list
FROM__________table) ;______
O RACLE
Copyright © 2004. O racle. Todos los derechos reservados.
Sintaxis de Subconsultas
Una subconsulta es una sentencia SELECT que está embebida en una cláusula de otra
sentencia SELECT. Puede crear sentencias potentes sentencias a partir de otras más simples
mediante subconsultas. Pueden resultar muy útiles si necesita seleccionar filas de una tabla
con una condición que depende de los datos de la propia tabla.
Puede colocar la subconsulta en diferentes cláusulas SQL, como éstas:
Cláusula WHERE
• Cláusula HAVING
• Cláusula FROM
En la sintaxis:
o p e r a t o r incluye una condición de comparación como, por ejemplo, >, = o IN
Nota: Hay dos clases de condiciones de comparación: operadores de una sola fila
(>, =, >=, <, <>, <=) y operadores de varias filas (IN , a n y , a l l ) .
La subconsulta se suele conocer como sentencia SELECT anidada, subSELECT o SELECT
interna. La subconsulta se suele ejecutar en primer lugar y se utiliza su salida para completar
la condición de consulta para la consulta principal (o externa).
SELECT l a s t n a m e
FROM employees 11000
WHERE salary >
(SELECT salary
FROM employees
WHERE last_name = 'Abel') #
LASTNAM E
¡King
[Kochhar
¡De Haan
¡Hartstein
¡Higgins
O RACLE
Copyright © 2004. O racle. Todos los derechos reservados.
Uso de Subconsultas
En la diapositiva, la consulta interna determina el salario del empleado Abel. La consulta
externa toma el resultado de la consulta interna y lo utiliza para mostr ar todos los empleados
que ganan más que esta cantidad.
O RACLE
Copyright © 2004. Oracle. Todos los derechos reservados.
O RACLE
Copyright © 2004. Oracle. Todos los derechos reservados.
Tipos de Subconsultas
• Subconsultas de mía sola ñla: Consultas que devuelven sólo mía fila de la sentencia
s e l e c t interna.
Subconsultas de varias filas: Consultas que devuelven más de una fila de la sentencia
SELECT interna.
Nota: También hay subconsultas de varias columnas, que son consultas que devuelven más
de una columna de la sentencia SELECT interna. Se tratan en el curso Base de Datos Oracle
lOg: Conceptos Fundamentales de SOL II
O RACLE
Copyright © 2004. O racle. Todos los derechos reservados.
LA S TN A M E JO B JD
Rajs ST_CLERK
Davies ST_CLERI<
Vargas ST_CLERK
1 l.AST_NAME JO B JD SALARY
[Rajs ST CLERK 3500
[Davies ST.CLERK I I ............................ 3100
O RACLE
Copyright © 2004. O racle. Todos los derechos reservados.
I L A S TN A M E J0B JD SALARY
Vargas ST_CLERK 2500
O RACLE
Copyright © 2004. O racle. Todos los derechos reservados.
O RACLE
Copyright © 2004. O racle. Todos los derechos reservados.
7 rows selected.
Ejemplo
Busque el puesto con el salario medio más bajo.
SELECT job_id, A V G (salary)
FROM employees
GROUP BY job_id
HAVING A V G (salary) = (SELECT M I N ( A V G (salary))
FROM employees
GROUP BY job_id);
Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 6-11
¿Qué Problema Hay en Esta Sentencia?
SELECT employeeid, l a s t n a m e
FROM employees
WHERE |salary|=
(SELECT MIN(salary)
FROM employees
GROUP BY department_id)|;
ERROR at line 4:
ORA-O1427: single-row subquery returns more than
one row
O RACLE
Copyright © 2004. O racle. Todos los derechos reservados.
no rows selected
ORACLE
Copyright © 2004. O racle. Todos los derechos reservados.
Operador Significado
IN Igual que algún miembro de la lista
ANY Compara el valor con cada valor devuelto
por la subconsulta
ALL Compara el valor con todos los valores
devueltos por la subconsulta
O RACLE
Copyright © 2004. Oracle. Todos los derechos reservados.
10 rows selected
O RACLE
Copyright © 2004. O racle. Todos los derechos reservados.
O RACLE
Copyright © 2004. O racle. Todos los derechos reservados.
SELECT e m p .l a s t n a m e
FROM employees emp
WHERE e m p .e m p l o y e e i d NOT IN
(SELECT mgr.manager id
FROM employees mgr);
no rows selected
O RACLE
Copyright © 2004. O racle. Todos los derechos reservados.
O RACLE
Copyright © 2004. Oracle. Todos los derechos reservados.
Resumen
En esta lección ha aprendido a utilizar subconsultas. Una subconsulta es una sentencia
SELECT que está embebida en una cláusula de otra sentencia SQL. Las subconsultas son
útiles cuando una consulta se basa en un criterio de búsqueda con valores
intermedios desconocidos.
Las subconsultas tienen estas características:
• Pueden transferir una fila de datos a una sentencia principal que contenga un operador
de una sola fila como, por ejemplo, =, <>, >, >=, < o <=
• Pueden transferir varias filas de datos a una sentencia principal que contenga un
operador de varias filas como, por ejemplo, IN
• Oracle Server las procesa en primer lugar, después de lo cual las cláusulas WHERE o
HAVING utilizan los resultados
• Pueden contener funciones de grupo
ORACLE
Copyright © 2004. Oracle. Todos los derechos reservados.
LA S TN A M E | H IR E D A T E
Abel 11-MAY-96
Taylor 24-MAR-98
2. Cree un informe que muestr e el número de empleado y el apellido de todos los empleados
que ganan más que el sueldo medio. Clasifique los resultados en orden ascendente
de salario.
EM PLOYEEJD LASTNAM E SALARY
Harlstein 13000
o
8 rows selected.
3. Escriba mía consulta que muestre el número de empleado y el apellido de todos los
empleados que trabajen en un departamento en que haya algún empleado cuyo apellido
contenga una u Guarde la sentencia SQL en un archivo de texto denominado
la b _ 0 6 _ 0 3 . s q l . Ejecute la consulta.
124 Mourgos
141 Rajs
142 Davies
143 Matos
144 Vargas
103 Hunold
104 Ernst
107 Lorentz
8 rows selected.
Whalen 10 |AD_ASST
<
O
CL
Ü1
LU
CO
King 90
I
Kochhar 90 AD_VP
De Haan || 90 |AD_VP
6 rows selected
5. Cree un informe para recursos humanos que muestre el apellido y el salario de todos los
empleados que informen a King.
LA S T N A M E SALARY
Kochhar 17000
De Haan 17000
Mourgos 5800
H otkey 10500
Hartstein 13000
DEPARTMENT ID LA S TN A M E J O B ID
90 King AD_PRES
90 Kochhar AD VP
90 De Haan AD_VP
E M P LO Y E E ID LASTNAM E SALARY