Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Actualizar tabla jerarquica

Estas en el tema de Actualizar tabla jerarquica en el foro de Mysql en Foros del Web. Hola espero y me puedan ayudar: Tengo al siguiente tabla id--- nombre--- id_padre ---habilitado 1 fernando 0 1 2 margarita 0 1 3 luz maria ...
  #1 (permalink)  
Antiguo 07/07/2011, 15:41
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 14 años, 4 meses
Puntos: 1
Actualizar tabla jerarquica

Hola espero y me puedan ayudar:

Tengo al siguiente tabla
id--- nombre--- id_padre ---habilitado

1 fernando 0 1
2 margarita 0 1
3 luz maria 0 1
4 raxzanell 1 1
5 maria fe 1 1
6 jessica 2 1
7 alvaro 2 1
8 irving 3 1
9 francisco 3 1
10 gabriela 8 1
11 shurisada 6 1
12 leyla 6 1 1
13 perfil 0 1 1
14 Catalogo 0 1
15 Medicos 14 1
16 Perfiles 14 1
17 Pacientes 14 1

Como le puedo hacer para que al seleccionar a luz maria el campo habilitado cambie a 0 y todos sus hijos es decir que irving, francisco y gabriela cambien

espero haverme entendudo
  #2 (permalink)  
Antiguo 08/07/2011, 06:59
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Actualizar tabla jerarquica

Recursibidad.

Si solo hay hijos es relativamente facil de resolver, si hay nietos y un numero indefinido de niveles de descendencia es más complicado.

Un solo nivel de descendencia (solo hijos)

UPDATE tutabla SET habilitado=1 WHERE id=X or id_padre=X

donde X=3 el id de luz maria.


Para armar un sistema con descendencia indefinida padre, hijos, nietos,.... te ayudaria mucho agregar un campo "nivel" donde guardes el nivel de de descendencia

Si padre=0 luego nivel=0

Para cada padre con nivel = 0

Hijos nivel=1 para cada padre con nivel=1

Hijos nivel=2 (serian los nietos del padre nivel=0)
...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 08/07/2011 a las 07:04

Etiquetas: tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:14.