需求是:不同角色可以查看的菜单不同,菜单分等级,一级菜单(即根目录),二级菜单,三级菜单。需要最后查询出这个角色可以查看的所有菜单,包括根菜单,二级,三级
但是通常表里面配置的肯定是叶子节点,就是最后一层菜单,比如下面的XX规则设置,所以要查出所有的父节点
使用
--首先查出该角色已经配置的菜单编码,然后以该编码为叶子节点,查询所有的父节点的编码
--比如下面的例子,角色菜单关系表配置了160000,010000,051800
--在用connect by prior 父节点=子节点,含义是用右边的子节点查出所有的父节点
SELECT *
FROM menu B
WHERE B.USER_TYPE = 'PC'
START WITH B.ITEM_CODE IN ('160000', '010000', '051800')
CONNECT BY PRIOR PARENT_CODE = ITEM_CODE
ORDER BY ITEM_CODE;
大功告成,通过三个编码,查出他们的父节点,以及父节点的父节点
比如051800,的父节点是051400;051400的父节点是050000;050000的父节点是000000