Tabla nodo padre-hijo
Publicado por Ricardo Jiménez (1 intervención) el 03/08/2011 15:59:56
Estimados:
Necesito vuestra ayuda para construir un Cursor. Les resumo tengo una tabla con estructura jerarquica o de nodos llamada node que tiene los siguientes campos node_id,node_name,lft,rgt,level donde:
node_id= primary key de la tabla
node_name= nombre del nodo
lft= indica todo lo que esta a la izquierda del nodo
rgt=indica todo lo que esta a la derecha del nodo
level = nivel del nodo
Ejemplo
node_id node_name lft rgt level
1 CAMPUS ANDRES BELLO 2 5035 1
6509 Sector CENTRO PONIENTE 5036 6723 1
6510 Sector ORIENTE 6724 9131 1
6511 Sector CERRO CALAN 9132 9805 1
6512 Sector QUINTA NORMAL 9806 11067 1
6514 Sector CENTRAL 11068 12341 1
6516 Sector SANTA MARIA 12342 13021 1
6517 Sector LA REINA 13022 13477 1
6518 Sector FARELLONES 13478 13609 1
8656 CAMPUS SUR 13610 17525 1
10849 CAMPUS NORTE 17526 21591 1
Para obtener los hijo nodo del siguiente nivel por ejemplo del node_id 1 necesito hacer la siguiente query
Select * from node where lft>=2 and rgt<=5035 and level =2 dando como resultado lo siguiente
node_id node_name lft rgt level
64 DIAGONAL PARAGUAY 265 3 1414 2
2150 DIAGONAL PARAGUAY 257 1415 2754 2
3463 PORTUGAL 84 2755 3514 2
3511 DIAGONAL PARAGUAY 253 3515 3748 2
3525 B. PIERRE DE COUBERTIN 150 3749 3762 2
3526 PORTUGAL 24 3763 3894 2
3529 B. PIERRE DE COUBERTIN 96 3895 4028 2
3537 PERIODISTA J.CARRASCO 11 4029 4114 2
3546 PERIODISTA J.CARRASCO 10 4115 4240 2
3554 PERIODISTA J.CARRASCO 9 4241 4300 2
3560 REBECA MATTE 79 4301 4356 2
3565 VICUÑA MACKENNA 79 4357 4472 2
4334 EULOGIA SANCHEZ 023 4473 4554 2
25515 DIAGONAL PARAGUAY 205 4555 5034 2
Y asi sucesivamente, Entonces como podria crear un cursor que me vaya ordenandoe insertando la jerarquia por ejemplo asi
nivel 1 nivel 2 nivel 3
1 64 512
1 2150 5124
Espero que me puedan ayudar.
Saludos
Necesito vuestra ayuda para construir un Cursor. Les resumo tengo una tabla con estructura jerarquica o de nodos llamada node que tiene los siguientes campos node_id,node_name,lft,rgt,level donde:
node_id= primary key de la tabla
node_name= nombre del nodo
lft= indica todo lo que esta a la izquierda del nodo
rgt=indica todo lo que esta a la derecha del nodo
level = nivel del nodo
Ejemplo
node_id node_name lft rgt level
1 CAMPUS ANDRES BELLO 2 5035 1
6509 Sector CENTRO PONIENTE 5036 6723 1
6510 Sector ORIENTE 6724 9131 1
6511 Sector CERRO CALAN 9132 9805 1
6512 Sector QUINTA NORMAL 9806 11067 1
6514 Sector CENTRAL 11068 12341 1
6516 Sector SANTA MARIA 12342 13021 1
6517 Sector LA REINA 13022 13477 1
6518 Sector FARELLONES 13478 13609 1
8656 CAMPUS SUR 13610 17525 1
10849 CAMPUS NORTE 17526 21591 1
Para obtener los hijo nodo del siguiente nivel por ejemplo del node_id 1 necesito hacer la siguiente query
Select * from node where lft>=2 and rgt<=5035 and level =2 dando como resultado lo siguiente
node_id node_name lft rgt level
64 DIAGONAL PARAGUAY 265 3 1414 2
2150 DIAGONAL PARAGUAY 257 1415 2754 2
3463 PORTUGAL 84 2755 3514 2
3511 DIAGONAL PARAGUAY 253 3515 3748 2
3525 B. PIERRE DE COUBERTIN 150 3749 3762 2
3526 PORTUGAL 24 3763 3894 2
3529 B. PIERRE DE COUBERTIN 96 3895 4028 2
3537 PERIODISTA J.CARRASCO 11 4029 4114 2
3546 PERIODISTA J.CARRASCO 10 4115 4240 2
3554 PERIODISTA J.CARRASCO 9 4241 4300 2
3560 REBECA MATTE 79 4301 4356 2
3565 VICUÑA MACKENNA 79 4357 4472 2
4334 EULOGIA SANCHEZ 023 4473 4554 2
25515 DIAGONAL PARAGUAY 205 4555 5034 2
Y asi sucesivamente, Entonces como podria crear un cursor que me vaya ordenandoe insertando la jerarquia por ejemplo asi
nivel 1 nivel 2 nivel 3
1 64 512
1 2150 5124
Espero que me puedan ayudar.
Saludos
Valora esta pregunta


0