Вопрос

Как бы я пошел на заполнение столбца глубины / длины замыкания стола при вставке нового узла на дерево?

Значения в предке и потомке являются идентификаторами из другой таблицы, которые представляют собой страницы, которые будут расположены в древесной структуре.

Закрытие таблицы:

ancestor    descendant     depth
1               1            0
1               2            1
1               3            1 
1               4            1
2               2            0
3               3            0 
4               4            0
.

Это будет правильно вставить предку и потомки, но я не уверен, как заполнить колонну глубины Вставьте запрос:

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}';
.

Какой лучший способ пойти об этом?Спасибо кучу!

Это было полезно?

Решение

Добавить глубину + 1 к первому выбору.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top