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

Recursividad en una misma tabla

Estas en el tema de Recursividad en una misma tabla en el foro de Mysql en Foros del Web. Buen dia. Tengo una tabla con esta estructura: id | id_pertenece | nombre 1 | 4 ....................| Grupo 1 2 | 9....................|Sub grupo1 3 | ...
  #1 (permalink)  
Antiguo 27/05/2016, 10:03
Avatar de chulifo  
Fecha de Ingreso: abril-2009
Ubicación: perdido en codigos del PHP, pero aprendo rapido!
Mensajes: 524
Antigüedad: 15 años
Puntos: 18
Recursividad en una misma tabla

Buen dia.

Tengo una tabla con esta estructura:

id | id_pertenece | nombre
1 | 4 ....................| Grupo 1
2 | 9....................|Sub grupo1
3 | 9....................| sub grupo 2
4 | 0....................| Principal
5 | 4....................| grupo2
6 | 4....................|grupo 3
7 | 9....................| sub grupo 3
8 | 4....................| grupo 4
9 | 4....................|grupo 5

explico:
cuando el id_pertenece es = 0 , quiere decir que es el grupo raiz.
La tabla que muestro indica que todos los sub grupos dependen del grupo 5 y que este grupo 5 al igual que los otros grupos n, dependen del princiapl.

la pregunta que tengo es, como selecciono los ultimos eslavones (sub grupos 1,2 y 3) conociendo que el princiapl es id = 4 ?

espero haberme explicado bien.

hasta ahora solo puedo saber quien depende del principal:

Código MySQL:
Ver original
  1. select * from grupos where id_pertenece = 4


Código MySQL:
Ver original
  1. select * from grupos where id_pertenece = (select id from grupos where id = 0)
__________________
Solo soy un simple fanático que mata el tiempo de la mejor manera.
  #2 (permalink)  
Antiguo 27/05/2016, 10:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Recursividad en una misma tabla

MySQL no posee consultas recursivas, como las que tiene Oracle. Para lograr el mismo efecto tienes que hacer un JOIN de la tabla consigo misma (sin olvidar el uso de alias) una vez por cada nivel que exista en la recursión.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 29/05/2016, 12:25
Avatar de chulifo  
Fecha de Ingreso: abril-2009
Ubicación: perdido en codigos del PHP, pero aprendo rapido!
Mensajes: 524
Antigüedad: 15 años
Puntos: 18
Respuesta: Recursividad en una misma tabla

Gracias por tu respuesta. Al final use un join si embargo complete lo que quería con PHP. Saludos
__________________
Solo soy un simple fanático que mata el tiempo de la mejor manera.

Etiquetas: recursividad, select, 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 23:04.