Cómo utilizar las cláusulas START WITH y CONNECT BY en Oracle para recorrer jerarquías
Las cláusulas START WITH y CONNECT BY de Oracle en la instrucción SELECT
permiten recorrer automáticamente una jerarquía. Sin esta función, sería necesario realizar una unión compleja propia para identificar qué filas están lógicamente relacionadas con otras. La cláusula START WITH identifica la fila o filas que se considerarán los puntos de partida, o "raíces", de la jerarquía. La cláusula CONNECT BY PRIOR indica cómo identificar qué filas están relacionadas entre sí.
¡Regístrate automáticamente hoy!
Por ejemplo, la consulta en Listado A produce un listado de "Reporta A" a partir de la tabla EMPLEADOS en el esquema de ejemplo HR proporcionado por Oracle.
La pseudocolumna LEVEL indica la profundidad del informe actualmente anidado; aquí, la utilizo para agregar sangría a los nombres de los empleados con LPAD. La condición START WITH indica que solo los empleados 101 y 102 deben considerarse como puntos de partida. La cláusula CONNECT BY PRIOR enlaza la columna employee_id de una fila con la columna manager_id de la siguiente, para indicar quién reporta a quién.
Si ejecutas esta consulta en el esquema HR, notarás que los apellidos no están ordenados dentro de la lista para un gerente específico; se enumeran en el orden en el que Oracle los encontró al procesar la jerarquía.
Si deseas que los subordinados estén ordenados alfabéticamente, puedes intentar ORDENAR POR la columna last_name original. Sin embargo, esto rompería la jerarquía y la convertiría nuevamente en una lista plana de nombres.
Cómo instalar y configurar Sybase Adaptive Server Enterprise (ASE) en LinuxTambién puedes intentar ORDENAR POR la pseudocolumna LEVEL primero, que indica la profundidad de una fila específica en la jerarquía. Esto, también, rompe la jerarquía: todos los gerentes se enumerarán primero, seguidos por las personas que reportan a cualquiera de ellos.
En Oracle 10g (ambas versiones), ahora es fácil hacer esto: puedes usar la nueva palabra clave SIBLINGS para crear el orden correcto. La sintaxis es:
ORDER SIBLINGS BY <expresión>
Por lo tanto, al agregar la cláusula:
ORDER SIBLINGS BY last_name
al final de la consulta, se conservará la jerarquía y también se ordenarán alfabéticamente los apellidos dentro de cada nivel. Ten en cuenta que se utilizó el last_name original y no el alias "Reporta A". El espacio adicional en "Reporta A" afectaría la ordenación, por lo que se debe utilizar el original. El Listado B muestra la salida, tanto antes como después de agregar ORDER SIBLINGS BY.
Omitiste un consejo?
Consulta el archivo de Oracle y ponerte al día con nuestros consejos de Oracle más recientes.
Qué es sudo y por qué deberías usarloEn Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Gestión de datos, allí encontraras muchos artículos similares a Cómo utilizar las cláusulas START WITH y CONNECT BY en Oracle para recorrer jerarquías , tenemos lo ultimo en tecnología 2023.
Artículos Relacionados