質問

新しいノードをツリーに挿入するときに、閉鎖テーブルの奥行き/長さの列の入力についてどのように進みますか?

祖先と子孫の値は、ツリー構造に配置されるページを表す別のテーブルからの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;
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top