Profundidade do MYSQL e do Fechamento da Tabela de Árvores
-
21-12-2019 - |
Pergunta
Como eu poderia ir sobre como preencher o encerramento da tabela profundidade/comprimento da coluna quando a inserção de um novo nó na árvore?
Os valores ancestral e descendente são os IDs de outra tabela, que representam as páginas de ser organizados em uma estrutura de árvore.
Encerramento Da Tabela:
ancestor descendant depth
1 1 0
1 2 1
1 3 1
1 4 1
2 2 0
3 3 0
4 4 0
Isso irá inserir os antepassados e descendentes corretamente, mas eu não tenho certeza de como preencher a profundidade da coluna Insira Consulta:
INSERT INTO closure_tree_path (ancestor, descendant)
SELECT ancestor, '{$node_id}' FROM closure_tree_path
WHERE descendant = '{$parent_id}'
UNION ALL SELECT '{$node_id}', '{$node_id}';
Qual é a melhor maneira de fazer isto?Muito obrigada!
Solução
Adicionar profundidade+1 para a primeira ESCOLHA.
INSERT INTO closure_tree_path (ancestor, descendant, depth)
SELECT ancestor, '{$node_id}', depth+1 FROM closure_tree_path
WHERE descendant = '{$parent_id}'
UNION ALL SELECT '{$node_id}', '{$node_id}', 0;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow