Está en la página 1de 27

Parte 5

Desplegando datos de
mltiples tablas

Desplegando datos de mltiples tablas 55-1

Parte 5 SQL-Server Bsico


Pgina 1 de 27

SQL Server Bsico

Objetivos
Al completar esta leccin, deber ser
capaz de hacer lo siguiente :

Escribir sentencias que obtengan


datos en ms de una tabla
utilizando equi y no-equi joins

Visualizar datos que generalmente


no son una condicin join

Hacer join en la misma tabla


Desplegando datos de mltiples tablas 55-2

Parte 5 SQL-Server Bsico


Pgina 2 de 27

SQL Server Bsico

Obteniendo Datos de Mltiples Tablas


EMP
EMPNO
-----7839
7698
...
7934

DEPT
ENAME
----KING
BLAKE

... DEPTNO
... -----...
10
...
30

MILLER ...

10

DEPTNO
-----10
20
30
40

DNAME
---------ACCOUNTING
RESEARCH
SALES
OPERATIONS

LOC
-------NEW YORK
DALLAS
CHICAGO
BOSTON

EMPNO
EMPNO DEPTNO
DEPTNO LOC
LOC
--------- ------------- --------------7839
10
7839
10 NEW
NEW YORK
YORK
7698
30
7698
30 CHICAGO
CHICAGO
7782
10
7782
10 NEW
NEW YORK
YORK
7566
20
7566
20 DALLAS
DALLAS
7654
30
7654
30 CHICAGO
CHICAGO
7499
30
7499
30 CHICAGO
CHICAGO
...
...
14
14 rows
rows selected.
selected.
Desplegando datos de mltiples tablas 55-3

SQL Server Bsico

Obteniendo Datos de Mltiples Tablas


En algunas ocasiones necesitara utilizar datos que estn en ms de una tabla.
En el ejemplo, el reporte muestra datos de tablas separadas.

EMPNO existe en la tabla EMP


DEPTNO existe en la tabla EMP y en DEPT
LOC existe en la tabla DEPT

La consulta se puede leer como Obtenemos los nombres del empleado, el


departamento y su localizacin
Para producir el reporte, se necesitan enlazar las tablas EMP y DEPT y acceder
los datos en ambas tablas.

Parte 5 SQL-Server Bsico


Pgina 3 de 27

Qu es un Join?
Utilice un join para consultar datos en ms de una
tabla.
SELECT
SELECT
FROM
FROM

table1.column,
table1.column, table2.column
table2.column
table1
table1 INNER
INNER JOIN
JOIN table2
table2
ON
ON table1.column1
table1.column1 == table2.column2;
table2.column2;

Escriba la condicincondicin-join en la clusula FROM


utilizando ON.

Incluya el nombre de la tabla como prefijo del


nombre de la columna, cuando el nombre de la
columna aparezca en dos o ms tablas.

Desplegando datos de mltiples tablas 55-4

SQL Server Bsico

Definicin de Join
Cuando se requieren datos que estn en ms de una tabla , se requiere utilizar
una condicion join. Los renglones de una tabla pueden ser unidos (joined) a
los de otra Tabla, solo si existen en ambas tablas un atributo que sea comn
entre ellas, normalmente , una relacin de la llave primaria y la llave fornea .
Para desplegar datos de dos o ms tablas que estn relacionadas escriba una
simple condicin/join en la clausula FROM,
Sintaxis
table.colum
Denota la tabla y la columna donde los datos sern recuperados.
table.colum 1 = table 2.column2
es la condicin de junta relaciona (join) las tablas.

Cuando escriba una consulta que relacione dos tablas preceda cada
columna con el nombre de su respectiva tabla por claridad y mejoramiento
del acceso a la base de datos.
Parte 5 SQL-Server Bsico
Pgina 4 de 27

Si el mismo nombre de la columna aparece en ms de una tabla el nombre


de la columna debe ser precedido por el nombre de la tabla.

Implementando un Join tradicional


Puede crear un Join utilizando la condicincondicin-join en la
clusula WHERE.
SELECT
SELECT
FROM
FROM
WHERE
WHERE

table1.column,
table1.column, table2.column
table2.column
table1,
table1, table2
table2
table1.column1
table1.column1 == table2.column2;
table2.column2;

Esta es la sintaxis general para crear un Join.


Join.

Desplegando datos de mltiples tablas 55-5

SQL Server Bsico

Definicin de Join(continuacin)
Algunos manejadores de bases de datos no incluyen en su sintaxis las palabras
INNER JOIN, JOIN, LEFT OUTER JOIN, etc. Que pueden ser utilizadas
directamente en la clusula FROM junto con el indicador ON condicin-join.
Por lo que el mtodo tradicional para hacer un join es colocar las tablas afectadas
en la clusula FROM separads por comas, y la condicin-join colocarla en la
clusula WHERE.
Estas dos formas de crear Joins genera exactamente el mismo resultado, solo que
el mtodo anterior( colocando la palabra join en la clusula FROM) permite mayor
comodidad y claridad para otras condiciones adicionales que afecten el resultado
de la consulta.

Parte 5 SQL-Server Bsico


Pgina 5 de 27

Producto Cartesiano
A x B

b
c

Desplegando datos de mltiples tablas 55-6

SQL Server Bsico

Producto Cartesiano
En matemticas, el producto cartesiano de dos conjuntos; es el conjuto de todos
los pares ordenados de elementos tales que el primer elemento de cada par
pertenece a A y el segundo elemento de cada par pertenece a B.

Parte 5 SQL-Server Bsico


Pgina 6 de 27

Producto Cartesiano
Un Producto Cartesiano es formado
cuando:
Una condicincondicin-join es omitida
Una condicin-join es invlida
Todos los registros de la primer tabla se
unen con todos los registros de la
segunda tabla.
Para evitar un Producto Cartesiano,
incluya siempre condicin-join vlida en
la clusula WHERE.
Desplegando datos de mltiples tablas 55-7

SQL Server Bsico

Producto cartesiano
Cuando una condicin-join es valida o se omite, el resultado es un producto
cartesiano en el que se combinan cada uno de los renglones de la tabla 1 con los
de la tabla 2, hasta terminar el ltimo registro de la tabla 1, con todos los de la
tabla 2
Un producto cartesiano tiende a generar un gran nmero de renglones (multiplicar
la cardinalidad de la tabla 1 por la cardinalidad de la tabla 2, y se obtiene la
cardinalidad del producto cartesiano).
Cardinalidad: en el modelo relacional, es un nmero de renglones de una tabla

Parte 5 SQL-Server Bsico


Pgina 7 de 27

Generando un Producto Cartesiano


EMP (14 rows)
rows)
EMPNO
EMPNO ENAME
ENAME
----------- --------7839
7839 KING
KING
7698
7698 BLAKE
BLAKE
...
...
7934
7934 MILLER
MILLER

DEPT (4 rows)
rows)
...
... DEPTNO
DEPTNO
...
... ----------...
10
...
10
...
30
...
30
...
...

ENAME
ENAME
----------KING
KING
BLAKE
BLAKE

Producto
Cartesiano:
14*4=56 reng.
reng.

10
10

DEPTNO
LOC
DEPTNO DNAME
DNAME
LOC
-------------------- ---------- --------------10
10 ACCOUNTING
ACCOUNTING NEW
NEW YORK
YORK
20
RESEARCH
DALLAS
20 RESEARCH
DALLAS
30
CHICAGO
30 SALES
SALES
CHICAGO
40
OPERATIONS
BOSTON
40 OPERATIONS BOSTON

DNAME
DNAME
------------------ACCOUNTING
ACCOUNTING

ACCOUNTING
ACCOUNTING
...
...
KING
RESEARCH
KING
RESEARCH
BLAKE
RESEARCH
BLAKE
RESEARCH
...
...
(56
(56 row(s)
row(s) afected)
afected)

Desplegando datos de mltiples tablas 55-8

SQL Server Bsico

Producto Cartesiano
En el ejemplo se muestran el nombre de los empleados y el de los departamentos
de las tablas EMP y DEPT. Debido a que no se indic condicin en la clusula
WHERE, todos los renglones (14) de la tabla EMP son unidos (joined) a los
renglones (4) de la tabla DEPT, el resultado es una tabla con 56 renglones.
SELECT
FROM

ename,
emp,

ENAME
--------------------KING
BLAKE

KING
BLAKE
.
56 rows selected.

dname
dep;

DNAME
----------------------ACCOUNTING
ACCOUNTING
RESEARCH
RESEARCH

Parte 5 SQL-Server Bsico


Pgina 8 de 27

Tipos de Joins

Equijoin Non-equijoin Outer join Self join

Desplegando datos de mltiples tablas 55-9

Tipos de joins
Existen dos tipos principales de condici-join.
Equijoins (inner join)
Non-equijoins
Existen joins adicionales:
Outer joins (left right join)
Self joins

Parte 5 SQL-Server Bsico


Pgina 9 de 27

SQL Server Bsico

Qu es un Equijoin?
EMP

DEPT

EMPNO ENAME
DEPTNO
------ ------- ------7839 KING
10
7698 BLAKE
30
7782 CLARK
10
7566 JONES
20
7654 MARTIN
30
7499 ALLEN
30
7844 TURNER
30
7900 JAMES
30
7521 WARD
30
7902 FORD
20
7369 SMITH
20
...
14 rows selected.

DEPTNO
------10
30
10
20
30
30
30
30
30
20
20
...
14 rows

DNAME
---------ACCOUNTING
SALES
ACCOUNTING
RESEARCH
SALES
SALES
SALES
SALES
SALES
RESEARCH
RESEARCH

LOC
-------NEW YORK
CHICAGO
NEW YORK
DALLAS
CHICAGO
CHICAGO
CHICAGO
CHICAGO
CHICAGO
DALLAS
DALLAS

selected.

Foreign key Primary key


Desplegando datos de mltiples tablas 55-10

SQL Server Bsico

Equijoins
Para determinar el nombre de los departamentos a los que pertenece cada
empleado, necesita comparar el valor en la columna DEPTNO de la tabla EMP
con los valores de DEPTNO en la tabla DEPT. La relacin entre las tablas EMP y
DEPT son conocidas como un equijoin, es decir, los valores de las columnas
DEPTNO en ambas tablas deben coincidir.
Nota: Los equijoins son tambin llamados simplemente joins o inner joins.

Parte 5 SQL-Server Bsico


Pgina 10 de 27

Recuperando Renglones
con Equijoins (inner)
SELECT
FROM

emp.empno, emp.ename, emp.deptno,


dept.deptno, dept.loc
emp INNER JOIN dept
ON emp.deptno=dept.deptno;

empno ename
deptno deptno loc
------ ---------- ------ ------ ------------7369 SMITH
20
20 DALLAS
7499 ALLEN
30
30 CHICAGO
7521 WARD
30
30 CHICAGO
7566 JONES
20
20 DALLAS
.....
14 rows selected.

Desplegando datos de mltiples tablas 55-11

SQL Server Bsico

Recuperando Renglones con Equijoins


En el ejemplo:

La clusula SELECT especifica las columnas a recuperar:

nmero y nombre del empleado y nmero del departamento al que se est


asignando tal empleado, tomados de la tabla EMP

nmero de departamento y localizacin que son columnas de la tabla


DEPT

La clusula FROM especifica las tablas que debern ser accedidas y el


tipo de join que se efectuar entre ellas (INNER JOIN):

Tabla DEPT
Tabla EMP
En la clusula ON se especifica la condicin join:
emp.deptno=dep.deptno;
Parte 5 SQL-Server Bsico
Pgina 11 de 27

Como la columna DEPTNO es comn en ambas tablas de ser calificado con el


nombre de la tabla respectiva.

Recuperando Renglones
con Equijoins
SELECT
FROM
WHERE

emp.empno, emp.ename, emp.deptno,


dept.deptno, dept.loc
emp , dept
emp.deptno=dept.deptno;

empno ename
deptno deptno loc
------ ---------- ------ ------ ------------7369 SMITH
20
20 DALLAS
7499 ALLEN
30
30 CHICAGO
7521 WARD
30
30 CHICAGO
7566 JONES
20
20 DALLAS
.....
14 rows selected.

Desplegando datos de mltiples tablas 55-12

SQL Server Bsico

Recuperando Renglones con Equijoins (continuacin)


En el ejemplo:

La clusula FROM especifica las tablas que debern ser acezadas sin
especificar el tipo de join que se efectuara entre ellas:
o Tabla DEPT
o Tabla EMP

La clusula WHERE especifica como las tablas realizarn el join en este


caso es un equi-join:
emp.deptno= dep.deptno;

Parte 5 SQL-Server Bsico


Pgina 12 de 27

Calificando Columnas Repetidas

Utilice el nombre de la tabla como prefijo


para calificar los nombres de columna
que estn en mltiples tablas.

Mejore el rendimiento utilizando prefijos


de tabla.

Diferencie las columnas que tienen

nombres idnticos pero se encuentran en


diferentes tablas utilizando alias.

Desplegando datos de mltiples tablas 55-13

Parte 5 SQL-Server Bsico


Pgina 13 de 27

SQL Server Bsico

Utilizando condiciones adicionales


EMP
EMPNO
-----7839
7698
7782
7566
7654
7499
7844
7900
7521
7902
7369
...

DEPT
ENAME
DEPTNO
------- ------KING
10
BLAKE
30
CLARK
10
JONES
20
MARTIN
30
ALLEN
30
TURNER
30
JAMES
30
WARD
30
FORD
20
SMITH
20

DEPTNO
-----10
30
10
20
30
30
30
30
30
20
20
...

DNAME
--------ACCOUNTING
SALES
ACCOUNTING
RESEARCH
SALES
SALES
SALES
SALES
SALES
RESEARCH
RESEARCH

Desplegando datos de mltiples tablas 55-14

LOC
-------NEW YORK
CHICAGO
NEW YORK
DALLAS
CHICAGO
CHICAGO
CHICAGO
CHICAGO
CHICAGO
DALLAS
DALLAS

SQL Server Bsico

Condiciones adicionales
Adems del join, puede indicar otros criterios de bsqueda en la clusula WHERE.
Por ejemplo, mostrar el nmero, el nombre, el numero de departamento, y la
localizacin del departamento del empleado KING.
SELECT empno, ename, emp.deptno, loc
FROM emp INNER JOIN dept
ON emp.deptno = dept.deptno
WHERE ename = KING;
empno
ename
deptno loc
-------------------- ---------- ------ ------------7839
KING
10 NEW YORK
O bien la forma tradicional :
SELECT
FROM
WHERE

empno, ename, emp.deptno, loc


Parte 5 SQL-Server Bsico
emp, dept
Pgina
14 de 27
emp.deptno = dept.deptno
AND
Ename = KING;

Usando Alias en Tablas


Simplifique los querys utilizando alias en tablas.
SELECT emp.empno, emp.ename, emp.deptno,
dept.deptno, dept.loc
FROM
emp INNER JOIN dept
ON emp.deptno=dept.deptno;

SELECT e.empno, e.ename, e.deptno,


d.deptno, d.loc
FROM
emp e INNER JOIN dept d
ON e.deptno=d.deptno;

Desplegando datos de mltiples tablas 55-15

SQL Server Bsico

Usando alias en tabla


Calificar las columnas con los nombres de las tablas puede consumir tiempo,
sobre todo cuando las tablas tienen nombres largos. Puede utilizar alias para renombrar las tablas.
En el ejemplo la tabla EMP toma el nombre de E, y la tabla DEPT el nombre D.

Parte 5 SQL-Server Bsico


Pgina 15 de 27

Reuniendo ms de dos Tablas


CUSTOMER

ORD

NAME
CUSTID
NAME
CUSTID
--------------------- ----------JOCKSPORTS
100
JOCKSPORTS
100
TKB
SPORT
SHOP
101
TKB SPORT SHOP
101
VOLLYRITE
102
VOLLYRITE
102
JUST
103
JUST TENNIS
TENNIS
103
K+T
105
K+T SPORTS
SPORTS
105
SHAPE
106
SHAPE UP
UP
106
WOMENS
107
WOMENS SPORTS
SPORTS
107
...
...
...
...
99 rows
selected.
rows selected.

CUSTID
CUSTID ORDID
ORDID
------------- ------------101
610
101
610
102
611
102
611
104
612
104
612
106
601
106
601
102
602
ITEM
102
602
106
604
106
604 ITEMID
ORDID
ORDID
ITEMID
106
605
106 -----605
------ ------------...
...
610
33
610
21
21 rows
rows selected.
selected.
611
11
611
612
11
612
601
11
601
602
11
602
...
...
64
64 rows
rows selected.
selected.

Desplegando datos de mltiples tablas 55-16

SQL Server Bsico

Condiciones de bsqueda adicionales


En ocasiones necesitara hacer join con mas de dos tablas. Por ejemplo, para
mostrar el nombre, las ordenes y los tems, el total de cada orden para el cliente
TKB SPORT SHOP, necesitara reunir las tablas CUSTUMER; ORD y ITEM.
SELECT
FROM
WHERE

c.name, o.ordid, i.itemid, i.itemtot, o.total


customer c JOIN ord o ON c.custid = o.custid
JOIN item i ON o.ordid = i.ordid
c.name = 'TKB SPORT SHOP';

name
ordid itemid
itemtot total
--------------------------------------------- ------ ------ ---------- -------------------TKB SPORT SHOP
610 3
58.00
101
TKB SPORT SHOP
610 1
35.00
101
TKB SPORT SHOP
610 2
8.40
101

(3 filas afectadas)
Parte 5 SQL-Server Bsico
Pgina 16 de 27

SELECT
FROM
WHERE
AND
AND

c.name, o.ordid, i.itemid, i.itemtot, o.total


customer c ,ord o , item i
c.custid = o.custid
o.ordid = i.ordid
c.name = 'TKB SPORT SHOP';

Non-Equijoins
EMP

SALGRADE

EMPNO ENAME
SAL
------ ------- -----7839 KING
5000
7698 BLAKE
2850
7782 CLARK
2450
7566 JONES
2975
7654 MARTIN
1250
7499 ALLEN
1600
7844 TURNER
1500
7900 JAMES
950
...
14 rows selected.

GRADE LOSAL HISAL


----- ----- -----1
700
1200
2
1201
1400
3
1401
2000
4
2001
3000
5
3001
9999

salario en la tabla EMP


se encuentre entre
low salary y high
salary en la table
SALGRADE

Desplegando datos de mltiples tablas 55-17

SQL Server Bsico

Non-equijoins
La relacin entre las tablas EMP y SALGRADE son un Non-Equijoins, es decir,
que ninguna columna de la tabla EMP corresponde directamente a una columna
en la tabla SALGRADE
La relacin entre estas dos tablas es por columna LOSAL y HISAL de la tabla
SALGRADE. La relacin se obtiene utilizando otro operador diferente de (=)

Parte 5 SQL-Server Bsico


Pgina 17 de 27

Recuperar Registros
con NonNon-Equijoins
SELECT
FROM

e.ename, e.sal, s.grade


emp e JOIN salgrade s
ON e.sal BETWEEN s.losal AND s.hisal;

ENAME
SAL
GRADE
---------- --------- --------JAMES
950
1
SMITH
800
1
ADAMS
1100
1
...
14 rows selected.

Desplegando datos de mltiples tablas 55-18

SQL Server Bsico

Recuperar registros con non-equijoins


El ejemplo crea un non-equijoin para evaluar que grado tiene el salario de cada
empleado: Este salario debe estar entre cualquier rango de lowsal y hisal de la
tabla SALGRADE.
Puede utilizar el mtodo tradicional.

SELECT
FROM
WHERE

e.ename, e.sal, s.grade


emp e, salgrade s
e.sal BETWEEN s.losal AND s.hisal

Parte 5 SQL-Server Bsico


Pgina 18 de 27

Outer Joins (LEFT | RIGHT)


EMP

DEPT

ENAME
----KING
BLAKE
CLARK
JONES
...

DEPTNO
-----10
30
10
20

DEPTNO
-----10
30
10
20
...
40

DNAME
---------ACCOUNTING
SALES
ACCOUNTING
RESEARCH
OPERATIONS

No existen empleados en el
departamento OPERATIONS

Desplegando datos de mltiples tablas 55-19

SQL Server Bsico

Outer Joins (LEFT | RIGHT)


Si los renglones no satisfacen la condicin join, el rengln no aparecer en el
resultado del query, por ejemplo, en el equi-join de EMP y DEP, el departamento
OPERATIONS no aparece debido a que ningn empleado trabaja en ese
departamento.
SELECT
FROM

ename
deptno
--------------KING
10
BLAKE
30
CLARK
10
JONES
20
MARTIN
30
ALLEN
30
TURNER
30
..
14 rows selected

e.ename, e.deptno, d.name


emp e JOIN dept d
ON e.deptno = d.deptno

dname
-------------ACCOUNTING
SALES
ACCOUNTING
RESEARCH
SALES
Parte 5 SQL-Server Bsico
SALESPgina 19 de 27
SALES

Outer Joins
Puede utilizar un outer join para ver tambin
aquellos renglones que normalmente no
cumplen la condicincondicin-join.
join.

Outer join puede ser por la izquierda (LEFT) o


por la derecha (RIGHT).

SELECT
SELECT
FROM
FROM

table.column,
table.column, table.column
table.column
table1
table1 LEFT
LEFT OUTER
OUTER JOIN
JOIN table2
table2
ON
ON table1.column
table1.column == table2.column;
table2.column;

SELECT
FROM

table.column, table.column
table1 RIGHT OUTER JOIN table2
ON table1.column = table2.column;

Desplegando datos de mltiples tablas 55-20

SQL Server Bsico

Outer Joins
Los renglones que no cumplen la condicin pueden ser mostrados dependiendo
de que lado se encuentren.
Utilice LEFT RIGHT dependiendo de que lado se encuentran los renglones que
desee aparezcan an cuando no cumpla la condicin-join.

Parte 5 SQL-Server Bsico


Pgina 20 de 27

Utilizando Outer Joins


SELECT
FROM

e.ename, d.deptno, d.dname


emp e RIGHT OUTER JOIN dept d
ON e.deptno = d.deptno
ORDER By d.deptno;

ENAME
DEPTNO DNAME
---------- --------- ------------KING
10 ACCOUNTING
CLARK
10 ACCOUNTING
...
40 OPERATIONS
15 rows selected.

Desplegando datos de mltiples tablas 55-21

SQL Server Bsico

Utilizando Outer Joins


Coloque la palabra LEFT o RIGHT del lado que desee mostrar los renglones con
diferencia de informacin.

Parte 5 SQL-Server Bsico


Pgina 21 de 27

Self Joins
EMP (WORKER)
EMPNO
----7839
7698
7782
7566
7654
7499

ENAME
-----KING
BLAKE
CLARK
JONES
MARTIN
ALLEN

EMP (MANAGER)
MGR
----

EMPNO
-----

7839
7839
7839
7698
7698

7839
7839
7839
7698
7698

ENAME
-------KING
KING
KING
BLAKE
BLAKE

"MGR en la tabla WORKER es igual a EMPNO


en la tabla MANAGER "
Desplegando datos de mltiples tablas 55-22

SQL Server Bsico

Self Joins
En ocasiones necesitar hacer join con la misma tabla. Para encontrar el nombre
del jefe de cada empleado, necesita hacer un join con EMP y con la misma tabla.
Por ejemplo, para encontrar el nombre del Jefe de Blake, necesita:

Encontrar a Blake en la tabla EMP mediante la columna ENAME

Encontrar el nmero de jefe para Blake en la columna MGR. El nmero de


jefe es 7839. De tal forma que , King es el Jefe de Blake.

Parte 5 SQL-Server Bsico


Pgina 22 de 27

Haciendo Join en la misma tabla


SELECT worker.ename + ' works for ' + manager.ename
FROM
emp worker JOIN emp manager
ON worker.mgr = manager.empno;

------------------------------------------------------------BLAKE
BLAKE works
works for
for KING
KING
CLARK
CLARK works
works for
for KING
KING
JONES
JONES works
works for
for KING
KING
MARTIN
MARTIN works
works for
for BLAKE
BLAKE
...
...
13
13 rows
rows selected.
selected.

Desplegando datos de mltiples tablas 55-23

SQL Server Bsico

Haciendo Join en la misma tabla


Un self-join puede ser implementado con el mtodo tradicional de la siguiente
forma:
SELECT
FROM
WHERE

worker.ename + works for + manager.ename


emp worker, emp manager
worker.mgr = manager.empno;

Parte 5 SQL-Server Bsico


Pgina 23 de 27

Prcticas

Utilice equi-joins para unir tablas


Ejecute outer-joins y self-joins
Agrege condiciones adicionales

Desplegando datos de mltiples tablas 55-24

Parte 5 SQL-Server Bsico


Pgina 24 de 27

SQL Server Bsico

Practica 5
1- Haga una consulta para desplegar el nombre, numero de departamento y el nombre del
departamento para todos los empleados.
ename
---------KING
BLAKE
CLARK
JONES
MARTIN
ALLEN
TURNER
JAMES
WARD
FORD
SMITH
SCOTT
ADAMS
MILLER

deptno dname
------------------10
ACCOUNTING
30
SALES
10
ACCOUNTING
20
RESEARCH
30
SALES
30
SALES
30
SALES
30
SALES
30
SALES
20
RESEARCH
20
RESEARCH
20
RESEARCH
20
RESEARCH
10
ACCOUNTING

(14 filas afectadas)

2. Haga una lista nica de todos los puestos que hay en el departamento 30.
3. Escriba un query para mostrar el nombre del empleado , nombre del departamento y
localizacin para todos los empleados que ganan una comisin.
4. Muestre el nombre de empleado y nombre del departamento para todos los empleados
que tengan una A en su nombre. Guarde el Script como s05q04.sql
5. Escriba un query que muestre el nombre, el puesto, el nmero y el nombre del
departamento para aquellos empleados que trabajen en DALLAS
6. Muestre el nombre y nmero de empleado junto con el nombre y nmero de su jefe,
ordene la salida por el nombre del jefe en forma descendente, etiquete las columnas como
se muestra a continuacin..... guarde el script como s05q06.sql
Employeee

Emp# Manager

Mgr#
Parte 5 SQL-Server Bsico
Pgina 25 de 27

Practica 5 (continuacin) (opcionales)


7. Modifique el script s05q06.sql para desplegar os empleados que no tienen manager y
sustituya el nombre del jefe por ------para cando no exista. Guarde el script.
Employee

Emp#

ADAMS
JONES
BLAKE
CLARK
SCOTT
FORD
SMITH
MILLER
ALLEN
WARD
MARTIN
TUNER
JAMES
KING

Manager
7876
7566
7698
7782
7788
7902
7369
7934
7499
7521
7654
7844
7900
7839

Mgr#

SCOTT
KING
KING
KING
JONES
JONES
FORD
CLARK
BLAKE
BLAKE
BLAKE
BLAKE
BLAKE
"--------------"

7788
7839
7839
7839
7566
7566
7902
7782
7698
7698
7698
7698
7698

8. Cree un query que muestre el nombre del empleado, numero de departamento y los
nombres de todos los empleados que trabajan en el mismo departamento para un empleado
dado. De nombres apropiados a las columnas.
deptno

Employee
10
10
10
10
10
10
20
20
20
20
20
20
20

CLARK
CLARK
KING
KING
MILLER
MILLER
ADAMS
ADAMS
ADAMS
ADAMS
FORF
FORD
FORD

Colleague
KING
MILLER
CLARK
MILLER
CLARK
KING
SMITH
JONES
SCOTT
FORD
SMITH
JONES
SCOTT

Parte 5 SQL-Server Bsico


Pgina 26 de 27


(56 rows(s) affected)

Practica 5(continuacin)
9. Haga un query que muestre el nombre, el puesto, el nombre del departamento, salario y
el nivel de salario de todos los empleados. (Nota: utilice la tabla SALGRADE para obtener
el nivel del salario)
ename
MILLER
CLARK
KING
SMITH
ADAMS
JONES
SCOTT
FORD
JAMES
WARD
MARTIN
ALLEN
TURNER
BLAKE

Job

dname
CLERK
MANAGER
PRESIDENT
CLERK
CLERK
MANAGER
ANALYST
ANALYST
CLERK
SALESMAN
SALESMAN
SALESMAN
SALESMAN
MANAGER

sal

ACCOUNTING
ACCOUNTING
ACCOUNTING
RESEARCH
RESEARCH
RESEARCH
RESEARCH
RESEARCH
SALES
SALES
SALES
SALES
SALES
SALES

grade
1300.00
2450.00
5000.00
800.00
1100.00
2975.00
3000.00
3000.00
950.00
1250.00
1250.00
1600.00
1500.00
2850.00

2
4
5
1
1
4
4
4
1
2
2
3
3
4

(14 row(s) affected)

10. Cree un query para mostrar el nombre y la fecha de ingreso para aquellos empleados
que han sido contratados despus del empleado BLAKE.
dname

Hiredate

SMITH
ALLEN
WARD
JONES

1980-12-17
1981-02-20
1981-02-22
1981-04-02

00:00:00.000
00:00:00.000
00:00:00.000
00:00:00.000

Parte 5 SQL-Server Bsico


Pgina 27 de 27