Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso obter recursivamente o ID pai das linhas nesta tabela MySQL?


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)