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í.

Tips de Oracle semanales en tu bandeja de entrada
El boletín gratuito de Oracle de Newsmatic, que se entrega todos los miércoles, cubre la automatización de utilidades de Oracle, generación de alertas de bases de datos, resolución de problemas de grafos dirigidos y má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 Linux

Tambié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 usarlo

En 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

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.