zoukankan      html  css  js  c++  java
  • 树形结构闭包表架构及操作方法

    数据表

    dept 部门表

    • ID 主键
    • parent_id 父ID
    • name 部门名称

    dept_path 部门路径表

    • parent_id 父ID 联合主键
    • son_id 子ID 联合主键

    数据结构

    操作

    新增节点 12 到 7 下

    INSERT INTO b_dept_path(parent_id, son_id)
      SELECT d.parent_id, 12
      FROM b_dept_path AS d
      WHERE d.son_id = 7
      UNION ALL
      SELECT 12, 12
    

    删除节点3

    • 删除节点3及其子节点的路径关系记录
    DELETE FROM b_dept_path WHERE son_id IN (SELECT son_id FROM b_dept_path WHERE parent_id = 3)
    

    移动节点4 到 节点6下

    • 第一步删除 "节点4及其子节点" 与 "节点4父节点"的关系 保留 "节点4" 与 "其子节点的关系"
    DELETE FROM b_dept_path WHERE parent_id IN (SELECT parent_id FROM b_dept_path WHERE son_id = 4) AND son_id IN (SELECT son_id FROM b_dept_path WHERE parent_id = 4) and parent_id != 4;
    
    INSERT INTO b_dept_path(parent_id, son_id)
    SELECT
        p.parent_id,
        s.son_id
    FROM
        b_dept_path p
        CROSS JOIN b_dept_path s
    WHERE
        p.son_id = 6
        AND s.parent_id = 4;
    

    参考链接

  • 相关阅读:
    js 笔记
    openstack笔记
    Nginx
    Nginx
    Nginx
    nginx 服务器篇
    Nginx 原理篇
    MySQL 视图、触发器、函数、存储过程
    day41
    MySQL 作业题及答案
  • 原文地址:https://www.cnblogs.com/yanzhen/p/14150658.html
Copyright © 2011-2022 走看看