MySQLと閉鎖テーブルの木の深さ
-
21-12-2019 - |
質問
新しいノードをツリーに挿入するときに、閉鎖テーブルの奥行き/長さの列の入力についてどのように進みますか?
祖先と子孫の値は、ツリー構造に配置されるページを表す別のテーブルからのIDSです。
クロージャテーブル:
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;
. 所属していません StackOverflow