Top Banner
Copyright Oracle Corporation, 1997. All rights reserved. 7 7 Subconsultas Multi-Columna Subconsultas Multi-Columna
13

Subconsultas Multi-Columna

Feb 11, 2017

Download

Documents

vuongduong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Subconsultas Multi-Columna

Copyright Oracle Corporation, 1997. All rights reserved.

77

Subconsultas Multi-ColumnaSubconsultas Multi-Columna

Page 2: Subconsultas Multi-Columna

7-2 Copyright Oracle Corporation, 1997. All rights reserved.

ObjetivosObjetivos

Al completar esta lección, debería ser capaz de hacer lo siguiente:

• Escribir una subconsulta multi-columna

• Describir y explicar el comportamiento de las subconsultas cuando se recuperan valores nulos

• Escribir una subconsulta en una cláusula FROM.

Al completar esta lecciAl completar esta leccióón, debern, deberíía ser a ser capaz de hacer lo siguiente:capaz de hacer lo siguiente:

• Escribir una subconsulta multi-columna

• Describir y explicar el comportamiento de las subconsultas cuando se recuperan valores nulos

• Escribir una subconsulta en una cláusula FROM.

Page 3: Subconsultas Multi-Columna

7-3 Copyright Oracle Corporation, 1997. All rights reserved.

Subconsultas Multi-ColumnaSubconsultas Multi-Columna

Consulta Principal

MANAGER 10

Subquery

SALESMAN 30

MANAGER 10

CLERK 20

La La C. Principal

compara

MANAGER 10MANAGER 10

Valores de una subc. multiValores de una subc. multi--registroregistro

y multiy multi--columnacolumna

SALESMAN SALESMAN 3030

MANAGER MANAGER 1010

CLERK CLERK 2020

concon

Page 4: Subconsultas Multi-Columna

7-4 Copyright Oracle Corporation, 1997. All rights reserved.

Usando Usando

Visualizar el nombre, nº de departamento, salario y comisión de cualquier empleado cuyo salario y comisión se correspondan (ambos) con la comisión y salario de cualquier empleado del departamento 30.

Visualizar el nombre, nVisualizar el nombre, nºº de departamento, de departamento, salario y comisisalario y comisióón de cualquier empleado cuyo n de cualquier empleado cuyo salario y comisisalario y comisióón se correspondan (n se correspondan (ambosambos) ) con la comisicon la comisióón y salario de cualquier empleado n y salario de cualquier empleado del departamento 30.del departamento 30.

SQL> SELECT ename, deptno, sal, comm

2 FROM emp

3 WHERE (sal, NVL(comm,0)) IN

4 (SELECT sal, NVL(comm,0)

5 FROM emp

6 WHERE deptno = 30);

Subconsultas Multi-ColumnaSubconsultas Multi-Columna

Page 5: Subconsultas Multi-Columna

7-5 Copyright Oracle Corporation, 1997. All rights reserved.

Comparaciones entre ColumnasComparaciones entre Columnas

Pairwise

SAL COMM

1600 300

1250 500

1250 1400

2850

1500 0

950

Nonpairwise

SAL COMM

1600 300

1250 500

1250 1400

2850

1500 0

950

Page 6: Subconsultas Multi-Columna

7-6 Copyright Oracle Corporation, 1997. All rights reserved.

Comparación de Subconsultas “Nonpairwise”

Comparación de Subconsultas “Nonpairwise”

SQL> SELECT ename, deptno, sal, comm

2 FROM emp

3 WHERE sal IN (SELECT sal

4 FROM emp

5 WHERE deptno = 30)

6 AND

7 NVL(comm,-1) IN (SELECT NVL(comm,-1)

8 FROM emp

9 WHERE deptno = 30);

Visualizar el nombre, nº de departamento, salario y comisión de cualquier empleado cuyo salario y comisión se corresponda con la comisión y salario de cualquier empleado del departamento 30.

Visualizar el nombre, nVisualizar el nombre, nºº de departamento, salario y de departamento, salario y comisicomisióón de cualquier empleado cuyo salario y n de cualquier empleado cuyo salario y comisicomisióón se corresponda con la comisin se corresponda con la comisióón y salario n y salario de cualquier empleado del departamento 30.de cualquier empleado del departamento 30.

Page 7: Subconsultas Multi-Columna

7-7 Copyright Oracle Corporation, 1997. All rights reserved.

Modificación de la Tabla EMPModificación de la Tabla EMP

• Asuma que el salario y comisión de “Clark”son modificados.

• Asuma que el salario y comisión de “Clark”son modificados.

• El salario se cambia a 1500$ y la comisión a 300$.

• El salario se cambia a 1500$ y la comisión a 300$.

ENAME SAL COMM

---------- --------- ---------

...

CLARK 1500 300

...

ALLEN 1600 300

TURNER 1500 0

...

14 rows selected.

Page 8: Subconsultas Multi-Columna

7-8 Copyright Oracle Corporation, 1997. All rights reserved.

Subconsulta “Pairwise”Subconsulta “Pairwise”

SQL> SELECT ename, deptno, sal, comm

2 FROM emp

3 WHERE (sal, NVL(comm,0)) IN

4 (SELECT sal, NVL(comm,0)

5 FROM emp

6 WHERE deptno = 30);

ENAME DEPTNO SAL COMM

---------- --------- --------- ---------

JAMES 30 950

WARD 30 1250 500

MARTIN 30 1250 1400

TURNER 30 1500 0

ALLEN 30 1600 300

BLAKE 30 2850

6 rows selected.

ENAME DEPTNO SAL COMM

---------- --------- --------- ---------

JAMES 30 950

WARD 30 1250 500

MARTIN 30 1250 1400

TURNER 30 1500 0

ALLEN 30 1600 300

BLAKE 30 2850

6 rows selected.

Page 9: Subconsultas Multi-Columna

7-9 Copyright Oracle Corporation, 1997. All rights reserved.

SQL> SELECT ename,deptno, sal, comm

2 FROM emp

3 WHERE sal IN (SELECT sal

4 FROM emp

5 WHERE deptno = 30)

6 AND

7 NVL(comm,-1) IN (SELECT NVL(comm,-1)

8 FROM emp

9 WHERE deptno = 30);

Subconsulta “Nonpairwise”Subconsulta “Nonpairwise”

ENAME DEPTNO SAL COMM

---------- --------- --------- ---------

JAMES 30 950

BLAKE 30 2850

TURNER 30 1500 0

CLARK 10 1500 300

...

7 rows selected.

Page 10: Subconsultas Multi-Columna

7-10 Copyright Oracle Corporation, 1997. All rights reserved.

Valores Nulos en una SubconsultaValores Nulos en una Subconsulta

SQL> SELECT employee.ename

2 FROM emp employee

3 WHERE employee.empno NOT IN

(SELECT manager.mgr

FROM emp manager);

no rows selected.no rows selected.

Page 11: Subconsultas Multi-Columna

7-11 Copyright Oracle Corporation, 1997. All rights reserved.

Uso de un Subconsulta en laCláusula FROM

Uso de un Subconsulta en laCláusula FROM

ENAME SAL DEPTNO SALAVG

---------- --------- --------- ----------

KING 5000 10 2916.6667

JONES 2975 20 2175

SCOTT 3000 20 2175

...

6 rows selected.

ENAME SAL DEPTNO SALAVG

---------- --------- --------- ----------

KING 5000 10 2916.6667

JONES 2975 20 2175

SCOTT 3000 20 2175

...

6 rows selected.

SQL> SELECT a.ename, a.sal, a.deptno, b.salavg

2 FROM emp a, (SELECT deptno, avg(sal) salavg

3 FROM emp

4 GROUP BY deptno) b

5 WHERE a.deptno = b.deptno

6 AND a.sal > b.salavg;

Page 12: Subconsultas Multi-Columna

7-12 Copyright Oracle Corporation, 1997. All rights reserved.

ResumenResumen

• Una subconsulta multi-columna devuelve más de una columna.

• Las comparaciones entre columnas en una comparación multi-columna, pueden ser “pairwise” o “nonpairwise”.

• Una subconsulta multi-columna puede también ser usada en la cláusula FROM de una sentencia SELECT.

• Una subconsulta multi-columna devuelve más de una columna.

• Las comparaciones entre columnas en una comparación multi-columna, pueden ser “pairwise” o “nonpairwise”.

• Una subconsulta multi-columna puede también ser usada en la cláusula FROM de una sentencia SELECT.

Page 13: Subconsultas Multi-Columna

7-13 Copyright Oracle Corporation, 1997. All rights reserved.

Visión General de la PrácticaVisión General de la Práctica

Creación de Subconsultas Multi-ColumnaCreación de Subconsultas Multi-Columna