Almacenar datos en una sola tabla relacional es llevada a cabo
mediante la asignación de dos columnas por fila. Una columna almacena un
identificador del registro padre y las segunda almacena el identificador del
registro. Asociar las filas en una relación jerárquica requiere un Join a la
misma tabla. Este tipo de Join es una técnica llamada Self Join.
Suponga que existe la necesidad de almacenar un árbol familiar en una
tabla relacional. Hay varios enfoques que uno puede tomar. Una opción es usar
una tabla llamada FAMILY con columnas llamadas ID, NAME, MOTHER_ID y FATHER_ID
donde cada fila almacena una persona con un ID único y los ID para sus padres.
Cuando dos tablas son unidas, cada fila de la tabla Source es sometida
a la condición Join con las filas de la tabla Target. Si la condición es
evaluada a Verdadero, entonces las filas son unidas, donde las filas de ambas
tablas son devueltas.
Cuando las columnas de un Join es originado de una sola tabla, un Self
Join es requerido. Conceptualmente, la tabla Source es duplicada para crear la
tabla Target. El Self Join trabaja como un Join Regular entre estas dos tablas.
Tenga en cuenta que, internamente. Oracle no duplica la tabla, esta descripción
es meramente provista para explicar el concepto de Self Join.
Ejemplo:
SELECT
e1.employee_id, e1.first_name, e1.last_name, e1.job_id, e1.manager_id,
e2.employee_id manager_id, e2.first_name manager_firsname, e2.last_name
manager_lastname,
e2.job_id manager_jobid, e2.manager_id
manager_managerid
FROM employees e1
JOIN employees e2 ON (e1.manager_id =
e2.employee_id)
ORDER BY employee_id;
Comentarios
Publicar un comentario