簡體   English   中英

MySQL中樹形結構的實現

[英]Implementation of Tree structure in 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 
--------------------

我需要重組數字以使用存儲過程動態發生。

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

在范圍> 6范圍內的任何人的左值上方。

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

然后為值大於+6的任何人更新相應的“ Rgt”。

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

將新行插入正確的位置。

將值插入“伯爵”,6、9

一種更簡單,更可擴展的方法是將初始值插入為100的倍數,然后可以輕松地在現有范圍之間插入新值。 如果您插入了連續范圍的6個新條目(150,125,112,106,103,101),這仍然需要您進行重組。

甚至更好地使用浮點數作為范圍值,那么您將不需要重新組織,因為始終是現有條目之間的數字。 即始終是一個值(Lft of row after - Lft of row before) / 2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM