desplegar datos de una tabla por jerarquias

12/02/2004 - 13:05 por Marco Antonio Montalvo Durán | Informe spam
hola a todos en el grupo

quisiera saber como podria desplegar los datos de una tabla que tiene los
datos en niveles a través de una consulta. los datos de la tabla tienen dos
columnas de la siguiente manera: CodigoNodo y CodigoNodoPadre y quisiera
desplegarlo asi:

NombreNodo
-Nodo1Nivel1
Nodo1Nivel3
-Nodo2Nivel1

de antemano, gracias por la ayuda

Marco Antonio Montalvo
Sucre - Bolivia

Preguntas similare

Leer las respuestas

#1 Tako
12/02/2004 - 13:23 | Informe spam
Busca en los BOL algo así como "Expandir jerarquías"

"Marco Antonio Montalvo Durán" wrote in message
news:
hola a todos en el grupo

quisiera saber como podria desplegar los datos de una tabla que tiene los
datos en niveles a través de una consulta. los datos de la tabla tienen


dos
columnas de la siguiente manera: CodigoNodo y CodigoNodoPadre y quisiera
desplegarlo asi:

NombreNodo
-Nodo1Nivel1
Nodo1Nivel3
-Nodo2Nivel1

de antemano, gracias por la ayuda

Marco Antonio Montalvo
Sucre - Bolivia


Respuesta Responder a este mensaje
#2 Carlos Sacristan
12/02/2004 - 13:24 | Informe spam
Hay muchas soluciones para la situación que planteas, puedes buscar por
la web que seguro que encontrarás alguna que te satisfaga.

De todos modos, en los BOL tienes una que puede que te sirva, busca por
"Expandir jerarquías". Ahí viene un ejemplo de cómo hacerlo


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Marco Antonio Montalvo Durán" escribió en el mensaje
news:
hola a todos en el grupo

quisiera saber como podria desplegar los datos de una tabla que tiene los
datos en niveles a través de una consulta. los datos de la tabla tienen


dos
columnas de la siguiente manera: CodigoNodo y CodigoNodoPadre y quisiera
desplegarlo asi:

NombreNodo
-Nodo1Nivel1
Nodo1Nivel3
-Nodo2Nivel1

de antemano, gracias por la ayuda

Marco Antonio Montalvo
Sucre - Bolivia


Respuesta Responder a este mensaje
#3 José Raúl Fenollar Martínez
12/02/2004 - 15:52 | Informe spam
Mira este link y observa el punto 4, de como usar el order by
http://www.sqlmag.com/Articles/Inde...1&pg=2

En este punto se explica como obtener un listado de Managers y empleados
dependientes. es como minimo muy curioso.
Respuesta Responder a este mensaje
#4 Norman A. Armas
12/02/2004 - 16:21 | Informe spam
Busca el siguiente articulo en el MSDN

INF: How to Show Expanding Hierarchies By Using SQL Server
Q275740

Saludos,

Norman



"Marco Antonio Montalvo Durán" wrote in message
news:
hola a todos en el grupo

quisiera saber como podria desplegar los datos de una tabla que tiene los
datos en niveles a través de una consulta. los datos de la tabla tienen


dos
columnas de la siguiente manera: CodigoNodo y CodigoNodoPadre y quisiera
desplegarlo asi:

NombreNodo
-Nodo1Nivel1
Nodo1Nivel3
-Nodo2Nivel1

de antemano, gracias por la ayuda

Marco Antonio Montalvo
Sucre - Bolivia


Respuesta Responder a este mensaje
#5 José Raúl Fenollar Martínez
13/02/2004 - 12:30 | Informe spam
A ver si te gusta esta solución

Se trata de ordenar la tabla según una función que retorna una valor
distinto e único para cada elemento. e invertir esa cadena de retorno

por ejemplo, para el elemento 001, cuyo padre es el mismo
retorna 001
para el elmento 002 retorna 001002

para el 009 retorna 001002004008009

con lo cual cada elemento tiene un valor de orden predeterminado.
Por otra parte, para la indentación, por medio de otra función recogemos el
nivel de profundidad que tiene, y añadimos caracteres delante en función del
nivel de profundidad.




use northwind
go
if not object_id('fn_Nivel') is null
drop function fn_Nivel
go
create function dbo.fn_Nivel( @Nodo varchar(3), @NodoPadre varchar(3))
returns int
as
begin
declare @ValorRetorno int
if @Nodo=@NodoPadre
set @ValorRetorno=0
else
set @ValorRetorno=1+dbo.fn_nivel(@NodoPadre,(select Padre from jerarquia
where nodo=@nodoPadre))

return @ValorRetorno
end
go

if not object_id('fn_CadenaCompuestaNivel') is null
drop function fn_CadenaCompuestaNivel
go

create function dbo.fn_CadenaCompuestaNivel( @Nodo varchar(3), @NodoPadre
varchar(3))
returns varchar(4000)
as
begin
declare @ValorRetorno varchar(4000)
if @Nodo=@NodoPadre
set @ValorRetorno=@Nodo
else
set
@ValorRetorno=@Nodo+convert(varchar(4000),dbo.fn_CadenaCompuestaNivel(@NodoP
adre,(select Padre from jerarquia where nodo=@nodoPadre)))

return @ValorRetorno
end
go

if not object_id('fn_InvertirCadena') is null
drop function fn_InvertirCadena
go

create function dbo.fn_InvertirCadena(@Cadena varchar(4000))
returns varchar(4000)
as
begin
declare @CadenaTemp varchar(4000)
declare @Longitud int

set @longitud=len(@Cadena)
set @cadenatemp=''

while @longitud>0
begin
set @cadenatemp=@cadenatemp+substring(@cadena,@longitud,1)
set @longitud=@longitud-1
end

return @CadenaTemp
end
go

if not object_id('JERARQUIA') IS NULL
drop table JERARQUIA

create table JERARQUIA (Nodo varchar(3), padre varchar(3))

truncate table jerarquia
insert into jerarquia select '001','001'
insert into jerarquia select '002','001'
insert into jerarquia select '003','001'
insert into jerarquia select '004','002'
insert into jerarquia select '005','002'
insert into jerarquia select '006','003'
insert into jerarquia select '007','003'
insert into jerarquia select '008','004'
insert into jerarquia select '009','008'


SELECT Nodo=replicate('-',dbo.fn_nivel(Nodo,Padre)) +
convert(varchar(10),Nodo),padre
FROM Jerarquia AS p1
ORDER BY dbo.fn_InvertirCadena(dbo.fn_CadenaCompuestaNivel(Nodo,Padre))



Espero que te sirva.
Un saludo desde Gandia (Valencia) España



"Marco Antonio Montalvo Durán" escribió en el mensaje
news:
hola a todos en el grupo

quisiera saber como podria desplegar los datos de una tabla que tiene los
datos en niveles a través de una consulta. los datos de la tabla tienen


dos
columnas de la siguiente manera: CodigoNodo y CodigoNodoPadre y quisiera
desplegarlo asi:

NombreNodo
-Nodo1Nivel1
Nodo1Nivel3
-Nodo2Nivel1

de antemano, gracias por la ayuda

Marco Antonio Montalvo
Sucre - Bolivia


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida