sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo obtener recursivamente la ID principal de las filas en esta tabla MySQL?

Esto El sitio web tiene una muy buena descripción general de los diferentes métodos para almacenar datos jerárquicos en mysql y PHP. Para responder a su pregunta, la forma más fácil es usar php y recursividad. Hay otros métodos que podría usar, como el modified preorder transversal , que no requieren múltiples consultas a la base de datos. Pero este método puede ser más complejo de implementar cuando se trata de muchas inserciones y actualizaciones.

Otro método genial y mi favorito personal es la llamada "tabla de cierre"/"relación de adyacencia" mencionada en ¿Cuál es la forma más eficiente/elegante de convertir una mesa plana en un árbol?

Con respecto a su comentario, básicamente tiene que hacer un bucle o una función recursiva que seleccione el padre de chicago, luego el padre del padre y así sucesivamente.

$stack = array();
$parent = 3;
while($parent != 0){
    $data = (put your mysql to get the row with parentID = $parent)
    $parent = data['parentID'];
    $stack[] = $data;
}

$stack = array_reverse($stack);

Stack entonces contendrá los padres de Chicago, (es decir, ubicación, EE. UU.)