Enlace Patrocinado
hay algunas veces necesitamos darle un orden jerárquico a datos que están en la misma consulta, para esto utilizamos la función connect by para comparar los campos y start with para indicarle cual es el dato inicial, si no está el start with realizara el proceso por cada registro.
Nota: Al utilizar la función connect by se agrega un dato el level, que indica en qué nivel de jerarquía esta.
Ejemplo: Queremos saber el orden de la empresa.
Creamos una tabla donde agregamos la jerarquía de la empresa
create table jerarquia_gerencial(codigo number,nombre_cargo varchar2(200),codigo_padre number);
Insertamos 7 registros.
insert into jerarquia_gerencial values (1,‘Director General’,null)insert into jerarquia_gerencial values (2,‘Viceprecidente Ventas’,1);insert into jerarquia_gerencial values (3,‘Jefe de Ventas’,2);insert into jerarquia_gerencial values (4,‘Ventas’,3);insert into jerarquia_gerencial values (5,‘Viceprecidente Servicio’,1);insert into jerarquia_gerencial values (6,‘Jefe de Servicios’,5);insert into jerarquia_gerencial values (7,‘Soporte Tecnico’,6);
Realizamos una consulta en orden de la misma tabla.
select codigo,codigo_padre,nombre_cargofrom jerarquia_gerencial aconnect by prior codigo = codigo_padrestart with codigo_padre is null;
Output:
Para que se vea mejor podemos utilizar una función LPAD y el recurso level.
select codigo,codigo_padre,Lpad(nombre_cargo,length(nombre_cargo)+(level*3),‘ ‘) Cargofrom jerarquia_gerencial aconnect by prior codigo = codigo_padrestart with codigo_padre is null;
Output: