需求:
将菜单的路径,由本级目录到最大父级目录展示出来。
eg:平台运维
--------运行情况
----------------运行日志
展示:运行日志-运行情况-平台维护
思路:
根据本级菜单ID递归查询父级菜单
实现:
SQL:
select substr(t.memuname,2) as menupath from(
select rownum as id,sys_connect_by_path(memuname,'-') as name from menu_info
start with id = 本级目录ID connect by prior parent_id = id order by id desc) t
where rownum = 1)
SQL解析:
1.内层查询,根据本级ID递归查询父级的名称,并转换为行拼接展示 (sys_connect_by_path(memuname,'-') as name)
2.外层查询,根据rownum特性只拿第一条,因为内层查询做了排序,最全路径在第一条。
3.外层查询,通过substr截取函数,把路径前面多余的-去掉