Comunidad de diseño web y desarrollo en internet online

¿ Cual sería la mejor forma de seleccionar estos datos ?

Citar            
MensajeEscrito el 31 Oct 2012 02:56 pm
Hola,

Estoy diseñando un gestor de contenidos en php en el que el usuario puede crear categorias y dentro de estas otras y dentro de estas otras etc..

Para realizar esto he creado una tabla Mysql con tres campos:
- id_categoria (El id de la categoria)
- nombre_categoria (El nombre)
- categoria_descendiente_id (El id de la categoria que es descendiente)

Si se trata de la categoria índice, es decir, la inicial, el campo categoria_descendiente_id tendrá el valor 0 en caso contrario contendrá el id de la categoria a la que pertenece.

Hasta aquí todo bien, el asunto es que deseo mostrar al usuario la ruta completa de categorias en referencia a la actual, por ejemplo, si el usuario se encuentra actualmente en "Manga larga", mostrar la ruta completa:

Ropa > Camisas > Manga larga

Podría realizar un bucle while y realizar un select de cada categoria pero me gustaría saber si existe un modo de hacerlo mediante una sola sentencia select

¿Que sentencia select usaríais para mostrar la ruta actual de categorias ?

Un saludo!

Por sirius

25 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Oct 2012 10:05 pm
Existe otra forma de agrupar jerarquía de datos: Nested set Model. En la cual, organizas los elementos de acuerdo a la "profundidad" que tienen dentro del arbol de categorias.

Es un poco complicado de explicar en unas cuantas líneas, te aconsejo que leas este artículo donde te explican la diferencia entre el modelo que usas y este. Además que el ejemplo es facil de comprender.

De esta forma, usando una sola consulta SQL (aunque algo complicada en un inicio) puedes obtener todo el camino desde una categoria a otra sin necesidad de bucles o programación adicional. Esta forma de jerarquia es usada en framework como CakePHP.

Por -george-

58 de clabLevel



 

Tartarus

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.