表结构
新增:
通过我们刚才新增数据得到这个结构的操作,我们发现新增分两种情况。第一种如下图所示:
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;