SQL - Tabla nodo padre-hijo

 
Vista:

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder