解决 sql查询树形接口数据排序

需求描述:

在通讯录开发中,上级组织菜单可以展示本级及一下多部门的用户信息,用户信息列表排序先按照组织排序再按照人员排序,但是组织中设置的排序字段只针对同级组织。

XXX公司                                                     1

        AA部门                                                1

                AA1小组                                      1

                AA2小组                                      2

                AA3小组                                      3

        BB部门                                                2

                BB1小组                                      1

                BB2小组                                      2

                BB3小组                                      3

        CC部门                                                3

                CC1小组                                      1

                CC2小组                                      2

                CC3小组                                      3

需求分析:

  • 点击AA2只展示AA2小组中的用户
  • 点击AA部门展示AA部门、AA1小组 、AA2小组 、AA3小组 中的用户

        排序:AA部门 > AA1小组 > AA2小组 > AA3小组

  • 点击XXX公司展示单位所有用户

       排序:XXX公司 > AA部门 > AA1小组 > AA2小组 > AA3小组 > BB部门 > BB1小组 > BB2小组                 > BB3小组> CC部门 > CC1小组 > CC2小组 > CC3小组

解决方案:

更具排序字段生成组织树路径path,最后更具path排序,但是path排序为字符串比较,所哟排序要固定长度例如:0001,0002等。

高位补0发:
select lpad(sn,4,'0') as sn from table

 生成路径:

select sys_connect_by_path(sn,'/') path
from (​​​​​​​select lpad(sn,4,'0') as sn from table)
connect by prior id=orgsupid start with id = '100'

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值