Isso website tem uma visão muito boa dos diferentes métodos para armazenar dados hierárquicos em mysql e PHP. Para responder sua pergunta, a maneira mais fácil é usar php e recursão. Existem outros métodos que você pode usar, como o
modified preorder transversal
, que não exigem várias consultas de banco de dados. Mas esse método pode ser mais complexo de implementar ao lidar com muitas inserções e atualizações. Outro método muito legal e meu favorito pessoal é a chamada "tabela de fechamento" / "relação de adjacência" mencionada em Qual é a maneira mais eficiente/elegante de analisar uma tabela plana em uma árvore?
Em relação ao seu comentário, você basicamente tem que fazer um loop ou uma função recursiva que seleciona o pai de chicago, depois o pai do pai e assim por diante.
$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);
A pilha conterá os pais de Chicago (ou seja, localização, EUA)