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!

Foi útil?

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
scroll top