Está en la página 1de 2

Programación de Bases de Datos con SQL

6-4: Autouniones y Consultas Jerárquicas


Actividades de Práctica

Objetivos
• Crear y ejecutar una sentencia SELECT para unir una tabla consigo misma mediante una
autounión
• Interpretar el concepto de una consulta jerárquica
• Crear un informe con estructura de árbol
• Aplicar formato a datos jerárquicos
• Excluir ramas de la estructura de árbol

Terminología
Identifique el término para cada una de las siguientes definiciones.

self join Une una tabla consigo misma

Recupera datos en función de una relación jerárquica natural


consulta jerarquicas
entre las filas de una tabla
Determina el número de pasos en sentido descendente desde la
level
fila de inicio que deberá devolver una consulta jerárquica
start with Identifica la fila de inicio de una consulta jerárquica

Especifica la relación entre las filas principales y las filas


connect by
secundarias de una consulta jerárquica

Inténtelo/Resuélvalo

Para cada problema, utilice la base de datos Oracle.

1. Muestre el apellido y número de empleado junto con el apellido y número de jefe. Etiquete las
columnas: Employee, Emp#, Manager y Mgr#, respectivamente. SELECT emp.last_name “Empleado”, emp.employee_id “Emp#”,
mgr.last_name
“Manager”, mgr.employee_Id”Mgr#”
FROM employees emp LEFT OUTER JOIN employees mgr ON
emp.manager_id =
mgr.employee_Id;
2. Modifique la pregunta 1 para mostrar todos los empleados y sus jefes, incluso aunque el
empleado no tenga jefe. Ordene la lista alfabéticamente por el apellido del empleado.
SELECT emp.last_name “Empleado”, emp.employee_id “Emp#”, mgr.last_name
“Manager”, mgr.employee_Id”Mgr#”
FROM employees emp LEFT OUTER JOIN employees mgr ON emp.manager_id =
mgr.employee_Id;
3. Muestre el nombre y la fecha de contratación de todos los empleados contratados antes que sus
jefes, junto con el nombre y la fecha de contratación de sus jefes. Etiquete las columnas como
Employee, Emp Hired, Manager y Mgr Hired, respectivamente.

Copyright © 2020 Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios.
SELECT emp.last_name " Empleado ", emp.hire_date "Emp Hired", mgr.last_name"Manager",
mgr.hire_date "Mgr Hired"FROM employees emp LEFT OUTER JOIN employees mgr ON
emp.manager_id =mgr.employee_IdWHERE emp.hire_date < mgr.hire_date
4. Escriba un informe que muestre la jerarquía del departamento de Lex De Haans.
Incluya el apellido, el salario y el ID de departamento en el informe. SELECT last_name, salary, department_id
FROM employees
START WITH first_name = ‘Lex’ AND last_name = ‘De Haan’
CONNECT BY PRIOR empoyee_id = manager_id

5. ¿Qué parte de esta sentencia es incorrecta?

SELECT last_name, department_id, salary


FROM employees
START WITH last_name = 'King'
CONNECT BY PRIOR manager_id = employee_id;

6. Cree un informe que muestre el diagrama de organización de la tabla de empleados completa.


Escriba el informe de modo que en cada nivel se sangren 2 espacios a cada empleado. Dado que
Oracle Application Express no puede mostrar los espacios delante de la columna, utilice -
(menos) en su lugar. SELECT LPAD(last_name) + (LEVEL-1)*2,’-‘)”Diagrama de Organización”
FROM employees
START WITH last name = (SELECT last_name from employees)
WHERE manager_id IS NULL
CONNECT BY PRIOR employee_id = manager_id;

7. Vuelva a escribir el informe del apartado 6 y excluya a De Haan y a todas las personas que
trabajan para él.

SELECT LPAD(last_name, LENGHT(last_name) + (LEVEL-1)*2, ‘-‘)”Diagrama de


Organización”
FORM employees START WITH last_name =(SELECT last_name from employees)
WHERE manager_id IS NULL
CONNECT BY PRIOR employee_id = manager_id AND last_name != ‘De Hann’,

Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios

También podría gustarte