Ya vimos en el anterior post cómo funcionaba la función LEVEL de PL/SQL. Ahora veremos algunos aspectos avanzados para poder obtener la información con más sustancia.

Un ejemplo de la SQL del post anterior con lo nuevo que vamos a aprender sería:

select f.folderid, f.parentfolderid, f.name, level
,CONNECT_BY_ISLEAF as RAIZ
,CONNECT_BY_ROOT name as PERTENECE_A
,SYS_CONNECT_BY_PATH(name,'/') as RUTA
from folder f
start with f.folderid = 1
and f.parentfolderid is null  -- Empieza por el raíz
connect by prior f.folderid = f.parentfolderid -- Genera el árbol hacia abajo
ORDER siblings BY name

ORDER siblings BY campo1,campo2

Con esto conseguimos que la estructura jerárquica salga ordenada alfabéticamente teniendo en cuenta primero el campo1, después el campo2,... y así sucesivamente.

En esta instrucción se pueden poner campos que estén fuera de la columna sobre la que se ha construido el árbol jerárquico manteniendo el orden de éste.

CONNECT_BY_ISLEAF as RAIZ

Esta instrucción devuelve 0 si el elemento es raíz o 1 si es hijo de la raíz.

CONNECT_BY_ROOT campo as PERTENECE_A

Esta instrucción nos da el valor del padre.

SYS_CONNECT_BY_PATH(campo,'/') as RUTA

Con esta instrucción obtenemos toda la estructura concatenada por el caracter que le indiquemos. Si el carácter forma en algún momento parte del valor del campo, obtendremos un error indicándonoslo y tendremos que usar otro carácter distinto.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies