Ver Mensaje Individual
  #4 (permalink)  
Antiguo 02/11/2012, 10:06
davidj
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.067
Antigüedad: 20 años, 7 meses
Puntos: 18
Respuesta: ¿ Cual sería la mejor forma de mostrar estos datos ?

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola davidj:

Como menciona gnzsoloyo, esto pareciera ser más bien un tema de programación, pero como mencionas que lo quieres hacer en un solo SELECT, trataré de centrarme sólo en el tema de SQL...

MySQL no soporta consultas jerárquicas, sin embargo, si tienes una "profundidad" fija, es decir, que conoces cuál es el número de nodos enlazados que tiene tu árbol podrías hacer algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +--------------+------------------+---------------------------+
  3. | id_categoria | nombre_categoria | categoria_descendiente_id |
  4. +--------------+------------------+---------------------------+
  5. |            1 | Ropa             |                         0 |
  6. |            2 | Camisas          |                         1 |
  7. |            3 | Manga larga      |                         2 |
  8. +--------------+------------------+---------------------------+
  9. 3 rows in set (0.00 sec)
  10.  
  11. mysql> SELECT T1.id_categoria,
  12.     ->        CONCAT(IFNULL(CONCAT(T3.nombre_categoria, ' > '), ''),
  13.     ->               IFNULL(CONCAT(T2.nombre_categoria, ' > '), ''),
  14.     ->               T1.nombre_categoria) arbol
  15.     -> FROM tabla T1
  16.     -> LEFT JOIN tabla T2 ON T1.categoria_descendiente_id = T2.id_categoria
  17.     -> LEFT JOIN tabla T3 ON T2.categoria_descendiente_id = T3.id_categoria;
  18. +--------------+------------------------------+
  19. | id_categoria | arbol                        |
  20. +--------------+------------------------------+
  21. |            1 | Ropa                         |
  22. |            2 | Ropa > Camisas               |
  23. |            3 | Ropa > Camisas > Manga larga |
  24. +--------------+------------------------------+
  25. 3 rows in set (0.00 sec)

Te repito, si la profundidad de tu árbol es más grande, la consulta se podría complicar mucho, pero con pocas dependencias igual y te puede servir...

Checa también esta página:

http://dev.bombozama.info/datos-jera...en-php-y-mysql

Creo que te puede servir también..

Saludos
Leo.

Primero, gracias de antemano.

Tomo nota, aunque no sabría la profundidad, es decir, no sabría el árbol de categorias descendientes y por tanto, como tu comentas, el código que me has facilitado no sería útil.

¿Alguien tiene alguna otra idea para hacerlo ?