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.)