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

Consulta Recursiva misma tabla

Estas en el tema de Consulta Recursiva misma tabla en el foro de Mysql en Foros del Web. Buen dia Necesito devolver el total de archivos según una sub_carpeta, por ejemplo si quiero saber los archivos de la sub_carpeta = 1, me tiene ...
  #1 (permalink)  
Antiguo 06/02/2014, 19:15
 
Fecha de Ingreso: enero-2013
Mensajes: 2
Antigüedad: 11 años, 11 meses
Puntos: 0
Consulta Recursiva misma tabla

Buen dia

Necesito devolver el total de archivos según una sub_carpeta, por ejemplo si quiero saber los archivos de la sub_carpeta = 1, me tiene que devolver que tiene 17 archivos, porque las otras sub_carpetas heredan de la sub_carpeta1.

Datos:

Sub_Carpeta ---- CarpetaPadre ---- Archivos
1 ------------ 0 ---------- 3
2 ------------ 0 ---------- 4
3 ------------ 1 ---------- 3
4 ------------ 1 ---------- 2
5 ------------ 3 ---------- 4
6 ------------ 5 ---------- 5

Tengo el siguiente query:
Código MySQL:
Ver original
  1. SELECT sum(archivos) FROM carpeta
  2. CarpetaPadre = 7 OR CarpetaPadre IN
  3.                (SELECT sub_carpeta FROM CarpetaPadre WHERE CarpetaPadre = 1 OR CarpetaPadre
  4.                        IN(SELECT sub_carpeta FROM CarpetaPadre WHERE CarpetaPadre = 1))
Pero con ese query solo obtengo la cantidad de archivos en dos niveles y lo necesito n niveles, me pueden ayudar a resolver ese query por favor.

Última edición por gnzsoloyo; 06/02/2014 a las 19:51
  #2 (permalink)  
Antiguo 06/02/2014, 19:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta Recursiva misma tabla

No existen las consultas recursivas en MySQL, como si existen en otros DBMS (Oracle, por ejemplo).
Si quieres hacer una consulta de N niveles, deberás hacer N JOINs.
__________________
¿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 07/02/2014, 10:18
Avatar de nup_  
Fecha de Ingreso: noviembre-2010
Mensajes: 265
Antigüedad: 14 años, 1 mes
Puntos: 32
Respuesta: Consulta Recursiva misma tabla

Ese es uno de los problemas de usar ese modelo para datos jerárquicos.
En caso de q necesites devolver un subárbol (un nodo con todos sus hijos) vas a tener q realizar un JOIN para cada nodo involucrado. Si tienes un conjunto muy grande de datos esto puede resultar lento.

Si te interesa otro modelo para representar la misma información pero con mucho mejor performance a la hora de hacer consultas, existen los conjuntos anidados. En este caso son las inserciones las q son lentas.
Algunos links acerca de conjuntos anidados:
http://decode2code.blogspot.com/2012...rquica-en.html
http://decode2code.blogspot.com/2012...conjuntos.html
en inglés:
http://www.sitepoint.com/hierarchical-data-database/
http://mikehillyer.com/articles/mana...data-in-mysql/

slds;

nup_

Etiquetas: recursiva, 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 20:20.