在MySQL中实现树结构

时间:2011-11-30 05:28:41

标签: php javascript mysql

我希望解决方案如下表所示:

---------------------
emp    lft   rgt
---------------------
Albert  1   12
Bert    2   3
Chuck   4   11
Donna   5   6
Eddie   7   8
Fred    9   10 
--------------------

我已手动插入上面的示例值。但我动态地需要它

如果我要在此表中再插入一个条目,它可能会放在表格的顶部,中间或末尾。例如,如果我将Ragu报告插入Fred,那么在此过程之后,我需要如下结果:

---------------------
emp    lft  rgt
---------------------
Albert  1   14
Bert    2   3
Chuck   4   13
Donna   5   6
Eddie   7   8
Fred    9   12 
Ragu   10   11 
--------------------

我需要使用存储过程动态地重新组织数字。

1 个答案:

答案 0 :(得分:0)

假设您要插入“Earl”6,9

向上左边的任何人使用from范围> 6。

UPDATE YOURTAB SET Lft = Lft + 1 where lft > 6;

然后为值大于+6的任何人更新相应的“Rgt”。

UPDATE YOURTAB SET Rgt = Rgt + 1 where Rgt > 6;

将新行插入正确的位置。

插入你的价值观“Earl”,6,9

一种更简单,更具扩展性的方法是将初始值插入为倍数 如果为100,则可以在现有范围之间轻松插入新值。如果你插入了6个新条目的连续范围(150,125,112,106,103,101),这仍然需要你重新组织。

或者甚至更好地使用浮点数作为范围值,然后您将永远不需要重新组织,因为它将始终是现有条目之间的数字。  即始终为值(Lft of row after - Lft of row before) / 2