No sé si lo que estoy preguntando es posible, pero esta es mi situación. Tengo una tabla estructurada algo como esto:Cómo escribir una consulta MYSQL que devolverá los elementos secundarios anidados a los padres?
+--------------------------------------------------+
| id | parent_id | name | category | ....
+--------------------------------------------------+
| 0 | -1 | item0 | 1 |
| 1 | 0 | item1 | 1 |
| 2 | 0 | item2 | 1 |
| 3 | 2 | item3 | 1 |
| 4 | 2 | item4 | 1 |
| 5 | -1 | item5 | 1 |
+--------------------------------------------------+
Un parent_id de -1 significa que sea un elemento de "base" con ninguno de los padres. Cada elemento tendrá más columnas de información. Necesito alguna manera de salida todos los elementos de una categoría anidada como la siguiente:
item0 => item1
=> item2
=> item3
=> item4
item5
no sé si eso tiene sentido o no, pero espero que lo hace!
La única forma en que puedo pensar es hacer una consulta para obtener todos los elementos "base" (consultar filas con parent_id = -1) y luego recorrer cada fila resultante, buscando filas que tengan parent_id igual a la identificación de la fila actual, luego repita el proceso profundizando más y más hasta que no haya más niños para un elemento base.
¿Hay una manera mejor?
Gracias!
Yo iría por 'null' para indicar sin padres –
Eso suena como una buena idea. Realmente no sé lo que estoy haciendo ;-) – Nate
Puede obtener todo de una vez y luego construir la estructura en php: http://stackoverflow.com/questions/2915748/how-can-i-convert- a-series-de-parent-child-relationships-into-a-hierarchical-tre – jeroen