预排序遍历树-无限级分类

2017-10-09  本文已影响0人  李小贱AA

表结构

2434244-e2a84547da38994b.jpg 2434244-788d2a6ba973bd4e.png

新增:
通过我们刚才新增数据得到这个结构的操作,我们发现新增分两种情况。第一种如下图所示:
1:变更所有受影响的节点,给新节点腾出空位置,所有左节点比G 左节点大的,都增加2。所有右节点比G右节点大的,也增加2.
update product_type set pt_left=pt_left+2 where pt_left>12;
update product_type set pt_right=pt_right+2 where pt_right>13;
insert into product_type(pt_name,pt_fid,pt_depth,pt_left,pt_right) values('XX',pid_D,3,13,14);

2:新增子节点,但该新增的节点左侧并有节点,列如:在E下新增Y节点,Y节点的左右值为7,8.这时候我们在修改后续节点时,应该考虑到E节点的存在。
update product_type set pt_left=pt_left+2 where pt_left>6;
update product_type set pt_right=pt_right+2 where pt_right>=7;
insert into product_type(pt_name,pt_fid,pt_depth,pt_left,pt_right) values('Y',2,3,7,8);

查询:

B节点下所有 子节点
SELECT * FROM product_type WHERE pt_left BETWEEN 2 AND 11 ORDER BY lft ASC;

上一篇下一篇

猜你喜欢

热点阅读