Hallo,
ich habe hier eine Sql Anweisung zum verschieben eines Baumers. Nun funktioniert dies nur, wenn ein einzelner Node in die selbe Ebene unterhalb verschoben wird. Außerdem habe ich noch nicht richtig verstanden, was für stehen muss. Nur der Rechte oder nur der Linke Wert des Nested stets oder auch jeweils rechts oder links? Muss vielleicht auch die Tiefe berücksichtigt werden? Wenn ja wie müsste die Anweiseung dann aussehen?
ich habe hier eine Sql Anweisung zum verschieben eines Baumers. Nun funktioniert dies nur, wenn ein einzelner Node in die selbe Ebene unterhalb verschoben wird. Außerdem habe ich noch nicht richtig verstanden, was für stehen muss. Nur der Rechte oder nur der Linke Wert des Nested stets oder auch jeweils rechts oder links? Muss vielleicht auch die Tiefe berücksichtigt werden? Wenn ja wie müsste die Anweiseung dann aussehen?
PHP-Code:
update tree
set
lft = lft + if (:p > :r,
if (:r < lft and lft < :p,
:l - :r - 1,
if (:l <= lft and lft < :r,
:p - :r - 1,
0
)
),
if (:p <= lft and lft < :l,
:r - :l + 1,
if (:l <= lft and lft < :r,
:p - :l,
0
)
)
),
rgt = rgt + if (:p > :r,
if (:r < rgt and rgt < :p,
:l - :r - 1,
if (:l < rgt and rgt <= :r,
:p - :r - 1,
0
)
),
if (:p <= rgt and rgt < :l,
:r - :l + 1,
if (:l < rgt and rgt <= :r,
:p - :l,
0
)
)
)
where :r < :p or :p < :l;
Kommentar