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

consulta recursiva en mysql

Estas en el tema de consulta recursiva en mysql en el foro de Mysql en Foros del Web. buenos dias les agradeceria me pudieran colaborar con el siguiente tema el pequeño inconveniente que tengo es que necesito hacer una consulta recursiva de una ...
  #1 (permalink)  
Antiguo 12/03/2008, 11:26
 
Fecha de Ingreso: marzo-2008
Mensajes: 31
Antigüedad: 16 años, 1 mes
Puntos: 0
consulta recursiva en mysql

buenos dias les agradeceria me pudieran colaborar con el siguiente tema el pequeño inconveniente que tengo es que necesito hacer una consulta recursiva de una de unos datos gurdados en forma jerarquica en su respectiva tabla.

por medio de una consulta desearia ver todos los hijos exixtentes en el jerarquia

la tabla es la siguiente tiene dos columnas donde el idpadre obviamente es el padre y el idcategoria son los hijos

idpadre idcategoria

estaba usando la sigueinte consulta pero solo me muestran los de la primera jerarquia

Select * from categoria where idpadre= any (select idcategoria from categoria where idpadre = 1068);



les agradeceria me colaboraran.
  #2 (permalink)  
Antiguo 12/03/2008, 14:48
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, 4 meses
Puntos: 2658
Re: consulta recursiva en mysql

Lo que estás intentando lograr, por lo que parece, es en realidad un INNER JOIN. Es decir, tienes los datos de idpadre y quieres los de idcategoria (hijos), estando ambas en tablas distintas pero vinculadas en un campo con distinto nombre en cada tabla.
Código:
 
SELECT * 
FROM categoría c1 INNER JOIN categoria c2
ON c1.idpadre=c2.categoría
WHERE idpadre=1068;
E incluso simplemente:
Código:
 
SELECT * 
FROM categoría 
WHERE idpadre= categoría AND idpadre=1068;
Si le sacas el condicional de AND, te listará todos los que componen la tabla donde ambos campos coincidan, incluso si son NULL;
  #3 (permalink)  
Antiguo 12/03/2008, 15:23
 
Fecha de Ingreso: marzo-2008
Mensajes: 31
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: consulta recursiva en mysql

gracias gnzsoloyo por la respuesta pero no en ese caso un inner join no serivira por que todo guardado en una tabla y no en varias tablas mas o menos la table es asi

idpadre idcategoria valor
1101 1102 jjjj
1101 1103 gggg
1103 1120 hhhh
1103 1121 ññññ
1121 1150 fff

asi sucesivamente como lo dije el idcategoria es hijo


gracias
  #4 (permalink)  
Antiguo 12/03/2008, 20:48
Avatar de Covids0020  
Fecha de Ingreso: septiembre-2003
Ubicación: España
Mensajes: 217
Antigüedad: 20 años, 6 meses
Puntos: 1
Re: consulta recursiva en mysql

Estoy en las mismas... sigo probando...

Por cierto, tiene que ser a la fuerza una subconsulta?... no hay otro método?, o mejor aún: Qué es más recomendable (menos pesado...) si lo hay?.

*Recordemos que se pregunta por una misma tabla, no diferentes.

Mi tabla es así:
id(index) | Nombre(string) | id_padre(int) | padre(si|no)
Sería.... ¿?
Si padre = 'si' (seleccionar id con padre = id_padre)
bufff

Saludos.
__________________
"La sabiduría comienza donde acaba el conocimiento". Yaris.
http://www.culturadigital.org

Última edición por Covids0020; 12/03/2008 a las 20:57
  #5 (permalink)  
Antiguo 13/03/2008, 09:16
 
Fecha de Ingreso: marzo-2008
Mensajes: 31
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: consulta recursiva en mysql

que mas pues yo lo estoy usando conectando mysql con php y desde php le doy codigo para que me haga la consulta y pues ya me recorre hasta la mitad del arbol jerarquico sin necesidad de subconsultas deberia probar conectandolo con otro lenguaje y le coloca ciclos de esa forma lo estoy sacando yo
  #6 (permalink)  
Antiguo 13/03/2008, 11:38
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Re: consulta recursiva en mysql

Hola
Talvez te sirva esto

http://dev.mysql.com/tech-resources/...ical-data.html

Saludos!
  #7 (permalink)  
Antiguo 16/03/2008, 08:04
Avatar de Covids0020  
Fecha de Ingreso: septiembre-2003
Ubicación: España
Mensajes: 217
Antigüedad: 20 años, 6 meses
Puntos: 1
Re: consulta recursiva en mysql

Blackster... me temo que el lenguaje, en este caso, es lo de menos... al menos es lo que pienso. Mi intención no es conseguir el objetivo porque, como bien dices, es muy sencillo hacerlo con cualquier lenguaje o script, lo complicado y el objetivo es hacerlo desde SQL para, por ejemplo, reducir las consultas a la DB.

Es decir... es muy poco... serio por decir algo, usar algo así:

SELECT * FROM tabla GROUP BY padreId
foreach
SELECT * FROM tabla WHERE padre = padreId
endforeach

...no?, de eso se trata, de evitarlo.

Genetix, muchas gracias!, he buscado en el manual pero costaba encontrar algo relacionado, tanto en castellano como en otros idiomas, la búsqueda por "consultas recursivas, anidadas, subconsultas" arroja menos que buscar por jerarquía! :D

PD: Una vez más, se trata de la misma tabla... no son distintas tablas.
__________________
"La sabiduría comienza donde acaba el conocimiento". Yaris.
http://www.culturadigital.org
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 04:05.