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

表结构

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;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容