【数据库】无限级分类——parent_id

背景:【数据库】无限级分类——总览_OTTOkongbai的博客-CSDN博客

建表

CREATE TABLE person(
    id VARCHAR(255) NOT NULL   COMMENT 'ID' ,
    name VARCHAR(255)    COMMENT '名称' ,
    parent_id VARCHAR(255)    COMMENT '父ID' ,
    PRIMARY KEY (id)
)  COMMENT = '人员组织架构';

插入测试数据

INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('1', '北京子公司', '0');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('2', '采购部', '1');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('3', '采购', '2');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('4', '仓储', '2');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('5', '物流', '2');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('6', '采购一组', '3');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('7', '采购二组', '3');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('8', '张三', '6');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('9', '李四', '6');
INSERT INTO `person` (`id`, `name`, `parent_id`) VALUES ('10', '王五', '7');

增删

(北京子公司增加财务部)

INSERT INTO `person` (`id`, `name`, `parent_id`) 
	VALUES (11, '财务部', '1');
INSERT INTO `person` (`id`, `name`, `parent_id`) 
	VALUES (12, '财务经理', '11');
INSERT INTO `person` (`id`, `name`, `parent_id`) 
	VALUES (13, '财务助理', '11');

(北京子公司删除财务部及下属职员)

(采购 下属全部人员)

WITH RECURSIVE _children AS
(
 SELECT fun.* FROM `person` fun WHERE fun.name='采购'
    UNION ALL
 SELECT fun.* FROM _children,`person` fun WHERE fun.parent_id=_children.id
)
SELECT * FROM _children;

(采购 直属部门或员工)

SELECT * FROM `person` a WHERE a.parent_id in
(
    SELECT id FROM `person` b WHERE b.name='采购'
);

(采购一组并入仓储)

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值