将部门和用户整合成为一棵树

DB2的数据库:

部门表的表结构:

DEPARTMENTID    VARCHAR(12)     部门编号(主键)
PARENTID        VARCHAR(12)     上级部门编号
DEPARTMENTNAME  VARCHAR(500)    部门名称
SORTNO          INTEGER         部门排序号

用户表的表结构:

USERID        INTEGER         用户ID(主键)
USERNAME      VARCHAR(100)    用户姓名
DEPARTMENTID  VARCHAR(12)     用户所在部门
SORTNO        INTEGER         用户排序号

问题:将部门组合成一棵树,并在部门下显示用户,就是说将部门和用户整合成为一棵树。

解决:

从两张表中取出数据,SQL语句如下:

with temp(DEPARTMENTID,PARENTID,DEPTUSERNAME,DEPARTMENTNAME,SORTNO, NODETYPE,USERID)
as (select DEPARTMENTID,PARENTID,DEPARTMENTNAME as DEPTUSERNAME, DEPARTMENTNAME,SORTNO,0,-1 from SYS_T_DEPARTMENT
  union
select '-1',a.DEPARTMENTID as PARENTID,a.USERNAME as DEPTUSERNAME,b.DEPARTMENTNAME, a.SORTNO,1,a.USERID
  from SYS_T_USER a left join SHERP.SYS_T_DEPARTMENT b on a.DEPARTMENTID=b.DEPARTMENTID)
  select ROW_NUMBER() OVER() as ROWID,temp.* from temp order by PARENTID,NODETYPE,SORTNO; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值