0

階層の保存に MPTT を使用しています。追加と削除の概念は、このModified Preorder Tree Traversalリンクで詳しく説明されています。

Modified preorder tree traversal で特定のノードとそれに関連付けられているツリーを更新するにはどうすればよいですか? 例: - TLA とその階層を TLC の下に移動したい場合。SQLスクリプトを使用して、どうすればそれを行うことができますか?

ここに画像の説明を入力

どんな助けでも大歓迎です。

ありがとう!

4

3 に答える 3

1

そのリンクに基づいて-特定のルートノードを取得し、そのルートノードの左の値よりも大きい左の値とそのルートの右の値よりも小さい右の値の両方を持つすべてのノードを更新することによってツリーを更新するように見えますノード。かなり簡単なようです。それは役に立ちますか?

于 2011-11-29T07:44:39.723 に答える
1

テクニカル サポート ポイントの後に TLA ポイントを移動します。

@TlaLeft = 2
@TlaRight = 7
@TechSupportRight = 18

TLA 新しいロケーション ポイント後の最初の更新:

UPDATE Tree SET lft = lft + @TlaRight - @TlaLeft +1,rgt = rgt + @TlaRight - @TlaLeft +1  WHERE rgt > @TechSupportRight;

2 番目の更新 TLA とサブポイントを新しい場所に:

UPDATE Tree SET lft = @TechSupportRight - @TlaLeft + lft+1 ,rgt = @TechSupportRight - @TlaRight + rgt+1  WHERE lft >= @TlaLeft and  rgt <= @TlaRight;

TLA の古い場所の後の 3 回目の更新:

UPDATE Tree SET lft = lft - (@TlaRight - @TlaLeft ) - 1 WHERE lft > @TlaLeft ;
UPDATE Tree SET rgt = rgt - (@TlaRight - @TlaLeft ) - 1 WHERE rgt > @TlaRight;
于 2019-01-29T08:21:40.817 に答える