Subconsultas Multi

Anuncio
7
Subconsultas Multi-Columna
Copyright  Oracle Corporation, 1997. All rights reserved.
Objetivos
Al
ón, deber
ía ser
Al completar
completar esta
esta lecci
lección,
debería
ser
capaz
capaz de
de hacer
hacer lo
lo siguiente:
siguiente:
•• Escribir
Escribir una
una subconsulta
subconsulta multi-columna
multi-columna
•• Describir
Describir yy explicar
explicar el
el comportamiento
comportamiento
de
de las
las subconsultas
subconsultas cuando
cuando se
se
recuperan
recuperan valores
valores nulos
nulos
•• Escribir
Escribir una
una subconsulta
subconsulta en
en una
una
cláusula
cláusula FROM.
FROM.
7-2
Copyright  Oracle Corporation, 1997. All rights reserved.
Subconsultas Multi-Columna
Consulta Principal
MANAGER 10
Subquery
SALESMAN
MANAGER
CLERK
La C. Principal
compara
MANAGER 10
7-3
con
30
10
20
Valores de una subc. multi-registro
y multi-columna
SALESMAN 30
MANAGER 10
CLERK
20
Copyright  Oracle Corporation, 1997. All rights reserved.
Usando
Subconsultas Multi-Columna
Visualizar
Visualizar el
el nombre,
nombre, nnºº de
de departamento,
departamento,
salario
ón de
salario yy comisi
comisión
de cualquier
cualquier empleado
empleado cuyo
cuyo
salario
ón se
ambos)
salario yy comisi
comisión
se correspondan
correspondan ((ambos)
con
ón yy salario
con la
la comisi
comisión
salario de
de cualquier
cualquier empleado
empleado
del
del departamento
departamento 30.
30.
SQL> SELECT
2 FROM
3 WHERE
4
5
6
7-4
ename, deptno, sal, comm
emp
(sal, NVL(comm,0)) IN
(SELECT sal, NVL(comm,0)
FROM
emp
WHERE deptno = 30);
Copyright  Oracle Corporation, 1997. All rights reserved.
Comparaciones entre Columnas
Pairwise
SAL
1600
1250
1250
2850
1500
950
7-5
Nonpairwise
COMM
300
500
1400
0
SAL
1600
1250
1250
2850
1500
950
Copyright  Oracle Corporation, 1997. All rights reserved.
COMM
300
500
1400
0
Comparación de Subconsultas
“Nonpairwise”
Visualizar
Visualizar el
el nombre,
nombre, nnºº de
de departamento,
departamento, salario
salario yy
comisi
ón de
comisión
de cualquier
cualquier empleado
empleado cuyo
cuyo salario
salario yy
comisi
ón se
ón yy salario
comisión
se corresponda
corresponda con
con la
la comisi
comisión
salario
de
de cualquier
cualquier empleado
empleado del
del departamento
departamento 30.
30.
SQL>
2
3
4
5
6
7
8
9
7-6
SELECT
FROM
WHERE
ename, deptno, sal, comm
emp
sal IN
(SELECT sal
FROM
emp
WHERE
deptno = 30)
AND
NVL(comm,-1) IN
(SELECT NVL(comm,-1)
FROM
emp
WHERE
deptno = 30);
Copyright  Oracle Corporation, 1997. All rights reserved.
Modificación de la Tabla EMP
•• Asuma
Asuma que
que el
el salario
salario yy comisión
comisión de
de “Clark”
“Clark”
son
son modificados.
modificados.
•• El
El salario
salario se
se cambia
cambia aa 1500$
1500$ yy la
la comisión
comisión aa
300$.
300$.
ENAME
SAL
COMM
---------- --------- --------...
CLARK
1500
300
...
ALLEN
1600
300
TURNER
1500
0
...
14 rows selected.
7-7
Copyright  Oracle Corporation, 1997. All rights reserved.
Subconsulta “Pairwise”
SQL> SELECT
2 FROM
3 WHERE
4
5
6
ename, deptno, sal, comm
emp
(sal, NVL(comm,0)) IN
(SELECT sal, NVL(comm,0)
FROM
emp
WHERE deptno = 30);
ENAME
DEPTNO
SAL
COMM
ENAME
DEPTNO
SAL
COMM
------------------- ----------------- ----------------- ----------------JAMES
30
950
JAMES
30
950
WARD
30
1250
500
WARD
30
1250
500
MARTIN
30
1250
1400
MARTIN
30
1250
1400
TURNER
30
1500
00
TURNER
30
1500
ALLEN
30
1600
300
ALLEN
30
1600
300
BLAKE
30
2850
BLAKE
30
2850
66 rows
rows selected.
selected.
7-8
Copyright  Oracle Corporation, 1997. All rights reserved.
Subconsulta “Nonpairwise”
SQL>
2
3
4
5
6
7
8
9
SELECT
FROM
WHERE
ename,deptno, sal, comm
emp
sal IN
(SELECT sal
FROM
emp
WHERE
deptno = 30)
AND
NVL(comm,-1) IN (SELECT NVL(comm,-1)
FROM
emp
WHERE
deptno = 30);
ENAME
DEPTNO
SAL
COMM
---------- --------- --------- --------JAMES
30
950
BLAKE
30
2850
TURNER
30
1500
0
CLARK
10
1500
300
...
7 rows selected.
7-9
Copyright  Oracle Corporation, 1997. All rights reserved.
Valores Nulos en una Subconsulta
SQL> SELECT
2 FROM
3 WHERE
employee.ename
emp employee
employee.empno NOT IN
(SELECT manager.mgr
FROM
emp manager);
no rows selected.
7-10
Copyright  Oracle Corporation, 1997. All rights reserved.
Uso de un Subconsulta en la
Cláusula FROM
SQL>
2
3
4
5
6
SELECT
FROM
WHERE
AND
a.ename, a.sal, a.deptno, b.salavg
emp a, (SELECT
deptno, avg(sal) salavg
FROM
emp
GROUP BY deptno) b
a.deptno = b.deptno
a.sal > b.salavg;
ENAME
SAL
DEPTNO
SALAVG
ENAME
SAL
DEPTNO
SALAVG
------------------- ----------------- ----------------- ------------------KING
5000
10
KING
5000
10 2916.6667
2916.6667
JONES
2975
20
2175
JONES
2975
20
2175
SCOTT
3000
20
2175
SCOTT
3000
20
2175
...
...
66 rows
rows selected.
selected.
7-11
Copyright  Oracle Corporation, 1997. All rights reserved.
Resumen
•• Una
Una subconsulta
subconsulta multi-columna
multi-columna
devuelve
devuelve más
más de
de una
una columna.
columna.
•• Las
Las comparaciones
comparaciones entre
entre columnas
columnas en
en
una
una comparación
comparación multi-columna,
multi-columna,
pueden
pueden ser
ser “pairwise”
“pairwise” o
o “nonpairwise”.
“nonpairwise”.
•• Una
Una subconsulta
subconsulta multi-columna
multi-columna puede
puede
también
también ser
ser usada
usada en
en la
la cláusula
cláusula FROM
FROM
de
de una
una sentencia
sentencia SELECT.
SELECT.
7-12
Copyright  Oracle Corporation, 1997. All rights reserved.
Visión General de la Práctica
Creación
Creación de
de Subconsultas
Subconsultas Multi-Columna
Multi-Columna
7-13
Copyright  Oracle Corporation, 1997. All rights reserved.
Descargar