Ver Mensaje Individual
  #3 (permalink)  
Antiguo 31/10/2012, 10:27
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: ¿ Cual sería la mejor forma de mostrar estos datos ?

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.