Ayuda en un query jerarquico...!

11/11/2005 - 15:13 por AlejoR | Informe spam
Que tal grupo, estoy un poco enrredado en un query asi que pido una
colaboración. ;)

Tengo en una tabla una estructura jerarquica de temas.
ConsecutivoTema, NombreTema, Padre, Ultimo
1 Tema 1 NULL N
2 Tema 1.1 1 N
3 Tema 1.1.1 2 S
4 Tema 1.1.2 2 S
5 Tema 1.1.3 2 S
6 Tema 1.2 1 N
7 Tema 1.2.1 6 S
8 Tema 2 NULL N
9 Tema 2.1 8 N
10 Tema 2.1.1 9 S

Table de Normas
ConsecutivoNorma, NombreNorma
1 Norma X
2 Norma Y
3 Norma A
4 Norma B
7 Norma F
10 Norma J
33 Norma FFX

Y una tabla que cruza las normas con los temas Normas X Temas (asociadas al
tema que sea ultimo nivel)
ConsecutivoNorma, ConsecutivoTema
1 3
1 7
2 4
3 5
7 3
7 7
10 10
33 10

Tengo en otra tabla unas Normas (leyes) y estan asociadas a un tema, pero a
un tema del ultimo nivel (S). es decir a los consecutivos 3,4,5,7 y 10 de la
tabla de temas en el ejemplo.

Si estoy localizado en el ultimo nivel de la jerarquia es "facil" sacar las
normas que estan asociadas a ese nivel. Pero si me posiciono en un nivel mas
arriba, como obtengo las normas asociadas a sus hijos.

Ejm.
Si me posiciono en el nivel Tema 1.1.1 que es ultimo nivel (3), me trae las
normas "Norma X (1)" y la "Norma F (7)"
Si me posiciono en el nivel Tema 1 deberia traerme todas las normas de sus
hijo (nietos en este caso) "Norma X (1), Norma Y(2), Norma F(7), Norma A (3)
Si me posiciono en el nivel Tema 2.1 deberia traerme todas las normas de sus
hijos. "Norma J (10) y Norma FFX (33)

Gracias por las sugerencias!
Suerte!

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
11/11/2005 - 16:12 | Informe spam
AlejoR,

No se si fue por casualidad o fue premeditado, pero la clave la tienes en el
nombre del tema. La forma que usas para formar el nombre del tema (sin
incluir la palabra "Tema"), se conoce como camino materializado. Aca te paso
unos links para que leas como trabajar con este metodo de representacion de
jerarquias y tambien una posible solucion a tu problema.

Si te fijas bien, puedes seleccionar los hijos y el resto de la generacion
si usas el operador LIKE y el caracter '%' y chequeas que el consecutivo del
tema esta en la tabla NormasXTemas.

declare @ConsecutivoTema int

set @ConsecutivoTema = 1

select b.ConsecutivoTema
from Temas as a inner join Temas as b
on b.NombreTema like a.NombreTema + '%'
where a.ConsecutivoTema = @ConsecutivoTema
and exists(select * from NormasXTemas as c where c.ConsecutivoTema =
b.ConsecutivoTema)

select n.NombreNorma
from
(
select b.ConsecutivoTema
from Temas as a inner join Temas as b
on b.NombreTema like a.NombreTema + '%'
where a.ConsecutivoTema = @ConsecutivoTema
and exists(select * from NormasXTemas as c where c.ConsecutivoTema =
b.ConsecutivoTema)
) as t
inner join
NormasXTemas as nt
on t.ConsecutivoTema = nt.ConsecutivoTema
inner join
Normas as n
on nt.ConsecutivoNorma = n.ConsecutivoNorma
go

Trees in SQL: Nested Sets and Materialized Path
http://www.dbazine.com/oracle/or-ar...tropashko4

Maintaining Hierarchies
http://www.windowsitpro.com/Article...?ArticleIDˆ26

Manipulating Hierarchies with UDFs
http://www.windowsitpro.com/SQLServ....html?Ad=1


AMB

"AlejoR" wrote:

Que tal grupo, estoy un poco enrredado en un query asi que pido una
colaboración. ;)

Tengo en una tabla una estructura jerarquica de temas.
ConsecutivoTema, NombreTema, Padre, Ultimo
1 Tema 1 NULL N
2 Tema 1.1 1 N
3 Tema 1.1.1 2 S
4 Tema 1.1.2 2 S
5 Tema 1.1.3 2 S
6 Tema 1.2 1 N
7 Tema 1.2.1 6 S
8 Tema 2 NULL N
9 Tema 2.1 8 N
10 Tema 2.1.1 9 S

Table de Normas
ConsecutivoNorma, NombreNorma
1 Norma X
2 Norma Y
3 Norma A
4 Norma B
7 Norma F
10 Norma J
33 Norma FFX

Y una tabla que cruza las normas con los temas Normas X Temas (asociadas al
tema que sea ultimo nivel)
ConsecutivoNorma, ConsecutivoTema
1 3
1 7
2 4
3 5
7 3
7 7
10 10
33 10

Tengo en otra tabla unas Normas (leyes) y estan asociadas a un tema, pero a
un tema del ultimo nivel (S). es decir a los consecutivos 3,4,5,7 y 10 de la
tabla de temas en el ejemplo.

Si estoy localizado en el ultimo nivel de la jerarquia es "facil" sacar las
normas que estan asociadas a ese nivel. Pero si me posiciono en un nivel mas
arriba, como obtengo las normas asociadas a sus hijos.

Ejm.
Si me posiciono en el nivel Tema 1.1.1 que es ultimo nivel (3), me trae las
normas "Norma X (1)" y la "Norma F (7)"
Si me posiciono en el nivel Tema 1 deberia traerme todas las normas de sus
hijo (nietos en este caso) "Norma X (1), Norma Y(2), Norma F(7), Norma A (3)
Si me posiciono en el nivel Tema 2.1 deberia traerme todas las normas de sus
hijos. "Norma J (10) y Norma FFX (33)

Gracias por las sugerencias!
Suerte!



Respuesta Responder a este mensaje
#2 AlejoR
11/11/2005 - 16:39 | Informe spam
Creo que fue casualidad.
Lo puse como ejemplo para tratar de mostror la jerarquia que se necesita,
pero en realidad en el nombre del tema solo esta el "Tema", la jerarquia la
mantengo con la relacion consecutivo_padre y consecutivo_tema

Entonces, si te entiendo, la idea es tener en un campo esa ruta armada???
1.1.1.1etc

"Alejandro Mesa" escribió en el
mensaje news:
AlejoR,

No se si fue por casualidad o fue premeditado, pero la clave la tienes en
el
nombre del tema. La forma que usas para formar el nombre del tema (sin
incluir la palabra "Tema"), se conoce como camino materializado. Aca te
paso
unos links para que leas como trabajar con este metodo de representacion
de
jerarquias y tambien una posible solucion a tu problema.

Si te fijas bien, puedes seleccionar los hijos y el resto de la generacion
si usas el operador LIKE y el caracter '%' y chequeas que el consecutivo
del
tema esta en la tabla NormasXTemas.

declare @ConsecutivoTema int

set @ConsecutivoTema = 1

especifico
normas
select b.ConsecutivoTema
from Temas as a inner join Temas as b
on b.NombreTema like a.NombreTema + '%'
where a.ConsecutivoTema = @ConsecutivoTema
and exists(select * from NormasXTemas as c where c.ConsecutivoTema > b.ConsecutivoTema)

select n.NombreNorma
from
(
select b.ConsecutivoTema
from Temas as a inner join Temas as b
on b.NombreTema like a.NombreTema + '%'
where a.ConsecutivoTema = @ConsecutivoTema
and exists(select * from NormasXTemas as c where c.ConsecutivoTema > b.ConsecutivoTema)
) as t
inner join
NormasXTemas as nt
on t.ConsecutivoTema = nt.ConsecutivoTema
inner join
Normas as n
on nt.ConsecutivoNorma = n.ConsecutivoNorma
go

Trees in SQL: Nested Sets and Materialized Path
http://www.dbazine.com/oracle/or-ar...tropashko4

Maintaining Hierarchies
http://www.windowsitpro.com/Article...?ArticleIDˆ26

Manipulating Hierarchies with UDFs
http://www.windowsitpro.com/SQLServ....html?Ad=1


AMB

"AlejoR" wrote:

Que tal grupo, estoy un poco enrredado en un query asi que pido una
colaboración. ;)

Tengo en una tabla una estructura jerarquica de temas.
ConsecutivoTema, NombreTema, Padre, Ultimo
1 Tema 1 NULL N
2 Tema 1.1 1 N
3 Tema 1.1.1 2 S
4 Tema 1.1.2 2 S
5 Tema 1.1.3 2 S
6 Tema 1.2 1 N
7 Tema 1.2.1 6 S
8 Tema 2 NULL N
9 Tema 2.1 8 N
10 Tema 2.1.1 9 S

Table de Normas
ConsecutivoNorma, NombreNorma
1 Norma X
2 Norma Y
3 Norma A
4 Norma B
7 Norma F
10 Norma J
33 Norma FFX

Y una tabla que cruza las normas con los temas Normas X Temas (asociadas
al
tema que sea ultimo nivel)
ConsecutivoNorma, ConsecutivoTema
1 3
1 7
2 4
3 5
7 3
7 7
10 10
33 10

Tengo en otra tabla unas Normas (leyes) y estan asociadas a un tema, pero
a
un tema del ultimo nivel (S). es decir a los consecutivos 3,4,5,7 y 10 de
la
tabla de temas en el ejemplo.

Si estoy localizado en el ultimo nivel de la jerarquia es "facil" sacar
las
normas que estan asociadas a ese nivel. Pero si me posiciono en un nivel
mas
arriba, como obtengo las normas asociadas a sus hijos.

Ejm.
Si me posiciono en el nivel Tema 1.1.1 que es ultimo nivel (3), me trae
las
normas "Norma X (1)" y la "Norma F (7)"
Si me posiciono en el nivel Tema 1 deberia traerme todas las normas de
sus
hijo (nietos en este caso) "Norma X (1), Norma Y(2), Norma F(7), Norma A
(3)
Si me posiciono en el nivel Tema 2.1 deberia traerme todas las normas de
sus
hijos. "Norma J (10) y Norma FFX (33)

Gracias por las sugerencias!
Suerte!



Respuesta Responder a este mensaje
#3 Alejandro Mesa
11/11/2005 - 17:45 | Informe spam
AlejoR,

Entonces, si te entiendo, la idea es tener en un campo esa ruta armada???
1.1.1.1etc



Correcto. Los links que adjunte te ayudaran a:

1 - Entender el metodo de "camino materializado".
2 - Como mantener este campo usando triggers
3 - Crear una funcion de usuario que te ayude a recorrer la jerarquia


AMB


AMB

"AlejoR" wrote:

Creo que fue casualidad.
Lo puse como ejemplo para tratar de mostror la jerarquia que se necesita,
pero en realidad en el nombre del tema solo esta el "Tema", la jerarquia la
mantengo con la relacion consecutivo_padre y consecutivo_tema

Entonces, si te entiendo, la idea es tener en un campo esa ruta armada???
1.1.1.1etc

"Alejandro Mesa" escribió en el
mensaje news:
> AlejoR,
>
> No se si fue por casualidad o fue premeditado, pero la clave la tienes en
> el
> nombre del tema. La forma que usas para formar el nombre del tema (sin
> incluir la palabra "Tema"), se conoce como camino materializado. Aca te
> paso
> unos links para que leas como trabajar con este metodo de representacion
> de
> jerarquias y tambien una posible solucion a tu problema.
>
> Si te fijas bien, puedes seleccionar los hijos y el resto de la generacion
> si usas el operador LIKE y el caracter '%' y chequeas que el consecutivo
> del
> tema esta en la tabla NormasXTemas.
>
> declare @ConsecutivoTema int
>
> set @ConsecutivoTema = 1
>
> especifico
> normas
> select b.ConsecutivoTema
> from Temas as a inner join Temas as b
> on b.NombreTema like a.NombreTema + '%'
> where a.ConsecutivoTema = @ConsecutivoTema
> and exists(select * from NormasXTemas as c where c.ConsecutivoTema > > b.ConsecutivoTema)
>
> select n.NombreNorma
> from
> (
> select b.ConsecutivoTema
> from Temas as a inner join Temas as b
> on b.NombreTema like a.NombreTema + '%'
> where a.ConsecutivoTema = @ConsecutivoTema
> and exists(select * from NormasXTemas as c where c.ConsecutivoTema > > b.ConsecutivoTema)
> ) as t
> inner join
> NormasXTemas as nt
> on t.ConsecutivoTema = nt.ConsecutivoTema
> inner join
> Normas as n
> on nt.ConsecutivoNorma = n.ConsecutivoNorma
> go
>
> Trees in SQL: Nested Sets and Materialized Path
> http://www.dbazine.com/oracle/or-ar...tropashko4
>
> Maintaining Hierarchies
> http://www.windowsitpro.com/Article...?ArticleIDˆ26
>
> Manipulating Hierarchies with UDFs
> http://www.windowsitpro.com/SQLServ....html?Ad=1
>
>
> AMB
>
> "AlejoR" wrote:
>
>> Que tal grupo, estoy un poco enrredado en un query asi que pido una
>> colaboración. ;)
>>
>> Tengo en una tabla una estructura jerarquica de temas.
>> ConsecutivoTema, NombreTema, Padre, Ultimo
>> 1 Tema 1 NULL N
>> 2 Tema 1.1 1 N
>> 3 Tema 1.1.1 2 S
>> 4 Tema 1.1.2 2 S
>> 5 Tema 1.1.3 2 S
>> 6 Tema 1.2 1 N
>> 7 Tema 1.2.1 6 S
>> 8 Tema 2 NULL N
>> 9 Tema 2.1 8 N
>> 10 Tema 2.1.1 9 S
>>
>> Table de Normas
>> ConsecutivoNorma, NombreNorma
>> 1 Norma X
>> 2 Norma Y
>> 3 Norma A
>> 4 Norma B
>> 7 Norma F
>> 10 Norma J
>> 33 Norma FFX
>>
>> Y una tabla que cruza las normas con los temas Normas X Temas (asociadas
>> al
>> tema que sea ultimo nivel)
>> ConsecutivoNorma, ConsecutivoTema
>> 1 3
>> 1 7
>> 2 4
>> 3 5
>> 7 3
>> 7 7
>> 10 10
>> 33 10
>>
>> Tengo en otra tabla unas Normas (leyes) y estan asociadas a un tema, pero
>> a
>> un tema del ultimo nivel (S). es decir a los consecutivos 3,4,5,7 y 10 de
>> la
>> tabla de temas en el ejemplo.
>>
>> Si estoy localizado en el ultimo nivel de la jerarquia es "facil" sacar
>> las
>> normas que estan asociadas a ese nivel. Pero si me posiciono en un nivel
>> mas
>> arriba, como obtengo las normas asociadas a sus hijos.
>>
>> Ejm.
>> Si me posiciono en el nivel Tema 1.1.1 que es ultimo nivel (3), me trae
>> las
>> normas "Norma X (1)" y la "Norma F (7)"
>> Si me posiciono en el nivel Tema 1 deberia traerme todas las normas de
>> sus
>> hijo (nietos en este caso) "Norma X (1), Norma Y(2), Norma F(7), Norma A
>> (3)
>> Si me posiciono en el nivel Tema 2.1 deberia traerme todas las normas de
>> sus
>> hijos. "Norma J (10) y Norma FFX (33)
>>
>> Gracias por las sugerencias!
>> Suerte!
>>
>>
>>



Respuesta Responder a este mensaje
#4 AlejoR
11/11/2005 - 23:40 | Informe spam
Funciona perfectamente. Gracias
Una adicional, si me encuentro en un nivel final, como podria obtener los
niveles hacia arriba en registros.


"Alejandro Mesa" escribió en el
mensaje news:
AlejoR,

Entonces, si te entiendo, la idea es tener en un campo esa ruta armada???
1.1.1.1etc



Correcto. Los links que adjunte te ayudaran a:

1 - Entender el metodo de "camino materializado".
2 - Como mantener este campo usando triggers
3 - Crear una funcion de usuario que te ayude a recorrer la jerarquia


AMB


AMB

"AlejoR" wrote:

Creo que fue casualidad.
Lo puse como ejemplo para tratar de mostror la jerarquia que se necesita,
pero en realidad en el nombre del tema solo esta el "Tema", la jerarquia
la
mantengo con la relacion consecutivo_padre y consecutivo_tema

Entonces, si te entiendo, la idea es tener en un campo esa ruta armada???
1.1.1.1etc

"Alejandro Mesa" escribió en el
mensaje news:
> AlejoR,
>
> No se si fue por casualidad o fue premeditado, pero la clave la tienes
> en
> el
> nombre del tema. La forma que usas para formar el nombre del tema (sin
> incluir la palabra "Tema"), se conoce como camino materializado. Aca te
> paso
> unos links para que leas como trabajar con este metodo de
> representacion
> de
> jerarquias y tambien una posible solucion a tu problema.
>
> Si te fijas bien, puedes seleccionar los hijos y el resto de la
> generacion
> si usas el operador LIKE y el caracter '%' y chequeas que el
> consecutivo
> del
> tema esta en la tabla NormasXTemas.
>
> declare @ConsecutivoTema int
>
> set @ConsecutivoTema = 1
>
> especifico
> normas
> select b.ConsecutivoTema
> from Temas as a inner join Temas as b
> on b.NombreTema like a.NombreTema + '%'
> where a.ConsecutivoTema = @ConsecutivoTema
> and exists(select * from NormasXTemas as c where c.ConsecutivoTema >> > b.ConsecutivoTema)
>
> select n.NombreNorma
> from
> (
> select b.ConsecutivoTema
> from Temas as a inner join Temas as b
> on b.NombreTema like a.NombreTema + '%'
> where a.ConsecutivoTema = @ConsecutivoTema
> and exists(select * from NormasXTemas as c where c.ConsecutivoTema >> > b.ConsecutivoTema)
> ) as t
> inner join
> NormasXTemas as nt
> on t.ConsecutivoTema = nt.ConsecutivoTema
> inner join
> Normas as n
> on nt.ConsecutivoNorma = n.ConsecutivoNorma
> go
>
> Trees in SQL: Nested Sets and Materialized Path
> http://www.dbazine.com/oracle/or-ar...tropashko4
>
> Maintaining Hierarchies
> http://www.windowsitpro.com/Article...?ArticleIDˆ26
>
> Manipulating Hierarchies with UDFs
> http://www.windowsitpro.com/SQLServ....html?Ad=1
>
>
> AMB
>
> "AlejoR" wrote:
>
>> Que tal grupo, estoy un poco enrredado en un query asi que pido una
>> colaboración. ;)
>>
>> Tengo en una tabla una estructura jerarquica de temas.
>> ConsecutivoTema, NombreTema, Padre, Ultimo
>> 1 Tema 1 NULL N
>> 2 Tema 1.1 1 N
>> 3 Tema 1.1.1 2 S
>> 4 Tema 1.1.2 2 S
>> 5 Tema 1.1.3 2 S
>> 6 Tema 1.2 1 N
>> 7 Tema 1.2.1 6 S
>> 8 Tema 2 NULL N
>> 9 Tema 2.1 8 N
>> 10 Tema 2.1.1 9 S
>>
>> Table de Normas
>> ConsecutivoNorma, NombreNorma
>> 1 Norma X
>> 2 Norma Y
>> 3 Norma A
>> 4 Norma B
>> 7 Norma F
>> 10 Norma J
>> 33 Norma FFX
>>
>> Y una tabla que cruza las normas con los temas Normas X Temas
>> (asociadas
>> al
>> tema que sea ultimo nivel)
>> ConsecutivoNorma, ConsecutivoTema
>> 1 3
>> 1 7
>> 2 4
>> 3 5
>> 7 3
>> 7 7
>> 10 10
>> 33 10
>>
>> Tengo en otra tabla unas Normas (leyes) y estan asociadas a un tema,
>> pero
>> a
>> un tema del ultimo nivel (S). es decir a los consecutivos 3,4,5,7 y 10
>> de
>> la
>> tabla de temas en el ejemplo.
>>
>> Si estoy localizado en el ultimo nivel de la jerarquia es "facil"
>> sacar
>> las
>> normas que estan asociadas a ese nivel. Pero si me posiciono en un
>> nivel
>> mas
>> arriba, como obtengo las normas asociadas a sus hijos.
>>
>> Ejm.
>> Si me posiciono en el nivel Tema 1.1.1 que es ultimo nivel (3), me
>> trae
>> las
>> normas "Norma X (1)" y la "Norma F (7)"
>> Si me posiciono en el nivel Tema 1 deberia traerme todas las normas de
>> sus
>> hijo (nietos en este caso) "Norma X (1), Norma Y(2), Norma F(7), Norma
>> A
>> (3)
>> Si me posiciono en el nivel Tema 2.1 deberia traerme todas las normas
>> de
>> sus
>> hijos. "Norma J (10) y Norma FFX (33)
>>
>> Gracias por las sugerencias!
>> Suerte!
>>
>>
>>



Respuesta Responder a este mensaje
#5 Alejandro Mesa
12/11/2005 - 04:39 | Informe spam
AlejoR,

En el link "Manipulating Hierarchies with UDFs", leete la parte sobre la
funcion ufn_GetMgmtChain.

declare @ConsecutivoTema int

set @ConsecutivoTema = 4

select *
from dbo.ufn_GetMgmtChain(@ConsecutivoTema ) as a


AMB

"AlejoR" wrote:

Funciona perfectamente. Gracias
Una adicional, si me encuentro en un nivel final, como podria obtener los
niveles hacia arriba en registros.


"Alejandro Mesa" escribió en el
mensaje news:
> AlejoR,
>
>> Entonces, si te entiendo, la idea es tener en un campo esa ruta armada???
>> 1.1.1.1etc
>
> Correcto. Los links que adjunte te ayudaran a:
>
> 1 - Entender el metodo de "camino materializado".
> 2 - Como mantener este campo usando triggers
> 3 - Crear una funcion de usuario que te ayude a recorrer la jerarquia
>
>
> AMB
>
>
> AMB
>
> "AlejoR" wrote:
>
>> Creo que fue casualidad.
>> Lo puse como ejemplo para tratar de mostror la jerarquia que se necesita,
>> pero en realidad en el nombre del tema solo esta el "Tema", la jerarquia
>> la
>> mantengo con la relacion consecutivo_padre y consecutivo_tema
>>
>> Entonces, si te entiendo, la idea es tener en un campo esa ruta armada???
>> 1.1.1.1etc
>>
>> "Alejandro Mesa" escribió en el
>> mensaje news:
>> > AlejoR,
>> >
>> > No se si fue por casualidad o fue premeditado, pero la clave la tienes
>> > en
>> > el
>> > nombre del tema. La forma que usas para formar el nombre del tema (sin
>> > incluir la palabra "Tema"), se conoce como camino materializado. Aca te
>> > paso
>> > unos links para que leas como trabajar con este metodo de
>> > representacion
>> > de
>> > jerarquias y tambien una posible solucion a tu problema.
>> >
>> > Si te fijas bien, puedes seleccionar los hijos y el resto de la
>> > generacion
>> > si usas el operador LIKE y el caracter '%' y chequeas que el
>> > consecutivo
>> > del
>> > tema esta en la tabla NormasXTemas.
>> >
>> > declare @ConsecutivoTema int
>> >
>> > set @ConsecutivoTema = 1
>> >
>> > especifico
>> > normas
>> > select b.ConsecutivoTema
>> > from Temas as a inner join Temas as b
>> > on b.NombreTema like a.NombreTema + '%'
>> > where a.ConsecutivoTema = @ConsecutivoTema
>> > and exists(select * from NormasXTemas as c where c.ConsecutivoTema > >> > b.ConsecutivoTema)
>> >
>> > select n.NombreNorma
>> > from
>> > (
>> > select b.ConsecutivoTema
>> > from Temas as a inner join Temas as b
>> > on b.NombreTema like a.NombreTema + '%'
>> > where a.ConsecutivoTema = @ConsecutivoTema
>> > and exists(select * from NormasXTemas as c where c.ConsecutivoTema > >> > b.ConsecutivoTema)
>> > ) as t
>> > inner join
>> > NormasXTemas as nt
>> > on t.ConsecutivoTema = nt.ConsecutivoTema
>> > inner join
>> > Normas as n
>> > on nt.ConsecutivoNorma = n.ConsecutivoNorma
>> > go
>> >
>> > Trees in SQL: Nested Sets and Materialized Path
>> > http://www.dbazine.com/oracle/or-ar...tropashko4
>> >
>> > Maintaining Hierarchies
>> > http://www.windowsitpro.com/Article...?ArticleIDˆ26
>> >
>> > Manipulating Hierarchies with UDFs
>> > http://www.windowsitpro.com/SQLServ....html?Ad=1
>> >
>> >
>> > AMB
>> >
>> > "AlejoR" wrote:
>> >
>> >> Que tal grupo, estoy un poco enrredado en un query asi que pido una
>> >> colaboración. ;)
>> >>
>> >> Tengo en una tabla una estructura jerarquica de temas.
>> >> ConsecutivoTema, NombreTema, Padre, Ultimo
>> >> 1 Tema 1 NULL N
>> >> 2 Tema 1.1 1 N
>> >> 3 Tema 1.1.1 2 S
>> >> 4 Tema 1.1.2 2 S
>> >> 5 Tema 1.1.3 2 S
>> >> 6 Tema 1.2 1 N
>> >> 7 Tema 1.2.1 6 S
>> >> 8 Tema 2 NULL N
>> >> 9 Tema 2.1 8 N
>> >> 10 Tema 2.1.1 9 S
>> >>
>> >> Table de Normas
>> >> ConsecutivoNorma, NombreNorma
>> >> 1 Norma X
>> >> 2 Norma Y
>> >> 3 Norma A
>> >> 4 Norma B
>> >> 7 Norma F
>> >> 10 Norma J
>> >> 33 Norma FFX
>> >>
>> >> Y una tabla que cruza las normas con los temas Normas X Temas
>> >> (asociadas
>> >> al
>> >> tema que sea ultimo nivel)
>> >> ConsecutivoNorma, ConsecutivoTema
>> >> 1 3
>> >> 1 7
>> >> 2 4
>> >> 3 5
>> >> 7 3
>> >> 7 7
>> >> 10 10
>> >> 33 10
>> >>
>> >> Tengo en otra tabla unas Normas (leyes) y estan asociadas a un tema,
>> >> pero
>> >> a
>> >> un tema del ultimo nivel (S). es decir a los consecutivos 3,4,5,7 y 10
>> >> de
>> >> la
>> >> tabla de temas en el ejemplo.
>> >>
>> >> Si estoy localizado en el ultimo nivel de la jerarquia es "facil"
>> >> sacar
>> >> las
>> >> normas que estan asociadas a ese nivel. Pero si me posiciono en un
>> >> nivel
>> >> mas
>> >> arriba, como obtengo las normas asociadas a sus hijos.
>> >>
>> >> Ejm.
>> >> Si me posiciono en el nivel Tema 1.1.1 que es ultimo nivel (3), me
>> >> trae
>> >> las
>> >> normas "Norma X (1)" y la "Norma F (7)"
>> >> Si me posiciono en el nivel Tema 1 deberia traerme todas las normas de
>> >> sus
>> >> hijo (nietos en este caso) "Norma X (1), Norma Y(2), Norma F(7), Norma
>> >> A
>> >> (3)
>> >> Si me posiciono en el nivel Tema 2.1 deberia traerme todas las normas
>> >> de
>> >> sus
>> >> hijos. "Norma J (10) y Norma FFX (33)
>> >>
>> >> Gracias por las sugerencias!
>> >> Suerte!
>> >>
>> >>
>> >>
>>
>>
>>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida