Sei sulla pagina 1di 3

academy.oracle.

com

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

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


entre las filas de una tabla
LEVEL Determina el número de pasos en sentido descendente desde la
fila de inicio que deberá devolver una consulta jerárquica
START WITH Identifica la fila de inicio de una consulta jerárquica

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


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.
R:SELECT emp.last_name "Employee", emp.employee_id "Emp#", mgr.last_name
"Manager", mgr.employee_Id "Mgr#"
FROM employees emp LEFT 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.
R:SELECT emp.last_name "Employee", emp.employee_id "Emp#", mgr.last_name
Copyright © 2019, 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.
"Manager", mgr.employee_Id "Mgr#"
FROM employees emp LEFT JOIN employees mgr ON emp.manager_id =
mgr.employee_Id
ORDER BY "Employee"

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.
R:SELECT emp.last_name "Employee", emp.hire_date "Emp Hired", mgr.last_name "Manager",
mgr.hire_date "Mgr Hired"
FROM employees emp LEFT JOIN employees mgr ON emp.manager_id = mgr.employee_Id
WHERE emp.hire_date < NVL( mgr.hire_date, TO_DATE('31.12.9999 23:59:59', 'dd.mm.yyyy
hh24:mi:ss'))
ORDER BY "Employee";

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.
R.SELECT last_name, salary, department_id
FROM employees
START WITH first_name = 'Lex' AND last_name = 'De Haan'
CONNECT BY employee_id = manager_id;
*Aqui tuve un problema solo me mostraba a “Han” y no se si es lo que se buscaba el ejercicio

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;
A mi parecer el error se encuentra en esa parte de la sentencia debido a que debe ser
primero 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.

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

*No supe como crear estos dos últimos informes

Copyright © 2019, 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.
Copyright © 2019, 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.

Potrebbero piacerti anche