当前位置: 首页 > article >正文

项目中菜单按照层级展示sql

效果如图:
在这里插入图片描述
直接上脚本

查四级菜单
select EFT_FLAG,MENU_ID,
CASE LEN(MENU_LVL)WHEN '4'THEN MENU_NAME ELSE '-' END AS   'MENU_NAME1',
CASE LEN(MENU_LVL)WHEN '8'THEN  MENU_NAME ELSE '-' END AS   'MENU_NAME2',
CASE LEN(MENU_LVL)WHEN '12'THEN MENU_NAME ELSE '-' END AS   'MENU_NAME3',
CASE LEN(MENU_LVL)WHEN '16'THEN MENU_NAME  ELSE '-' END AS   'MENU_NAME4',
* from  YGT..UPM_MENU  where  MENU_PUR='4' 


--查询被授权的菜单列表
--按层级查询所有上级菜单
--SELECT * FROM (
SELECT 
a.MENU_ID as 菜单系统编号,
a.MENU_NAME as 菜单系统名称,
e.DICT_ITEM_NAME as 菜单范围,
case 
  when a.PAR_MENU=0 then a.MENU_NAME 
  else 
    case 
      when not exists(select 1 from UPM_MENU where b.MENU_ID=a.PAR_MENU) then a.MENU_NAME
      when b.PAR_MENU=0 then b.MENU_NAME 
      else 
        case
          when not exists(select 1 from UPM_MENU where c.MENU_ID=b.PAR_MENU) then b.MENU_NAME
          when c.PAR_MENU=0 then c.MENU_NAME 
          else d.MENU_NAME
        end
    end
end as 一级菜单,
case 
  when a.PAR_MENU=0 then null 
  when b.PAR_MENU=0 then a.MENU_NAME 
  else 
    case
      when not exists(select 1 from UPM_MENU where c.MENU_ID=b.PAR_MENU) then a.MENU_NAME
      when c.PAR_MENU=0 then b.MENU_NAME 
      else c.MENU_NAME
    end
end as 二级菜单,
case 
  when a.PAR_MENU=0 then null 
  when b.PAR_MENU=0 then null 
  when c.PAR_MENU=0 then a.MENU_NAME 
  else b.MENU_NAME
end as 三级菜单,
case 
  when a.PAR_MENU=0 then null 
  when b.PAR_MENU=0 then null 
  when c.PAR_MENU=0 then null 
  else a.MENU_NAME
end as 四级菜单
,a.BUSI_CODE as 流程代码
FROM UPM_MENU a 
LEFT JOIN UPM_MENU b ON a.PAR_MENU=b.MENU_ID
LEFT JOIN UPM_MENU c ON b.PAR_MENU=c.MENU_ID
LEFT JOIN UPM_MENU d ON c.PAR_MENU=d.MENU_ID,
UPM_DICT_ITEMS e
where a.MENU_PUR=e.DICT_ITEM and e.DICT_CODE='MENU_PUR'
and a.MENU_ID in(
--被授权的菜单列表(受理、审核平台)
SELECT MENU_ID FROM UUM_OBJ_PERM WHERE OPP_OBJ_TYPE =2 AND OPP_OBJ_CODE IN (SELECT OPP_OBJ_CODE FROM UUM_USER_PLAT WHERE PLAT_CODE IN('2','3'))
)
--过滤为临柜、非临柜菜单、查询菜单
--AND a.MENU_PUR IN('2','3','6')
order by a.MENU_PUR asc,a.MENU_ID asc

http://www.kler.cn/a/547181.html

相关文章:

  • SpringCloud面试题----微服务下为什需要链路追踪系统
  • 【C++】C++ 旅馆管理系统(含 源码+报告)【独一无二】
  • 统计安卓帧率和内存
  • (萌新入门)如何从起步阶段开始学习STM32 —— 1如何迁移一个开发版的工程
  • c#展示网页并获取网页上触发按钮的值进行系统业务逻辑处理
  • vue3 关于插槽的使用
  • 手写一个Java Android Binder服务及源码分析
  • 云创智城充电系统:基于 SpringCloud 的高可用、可扩展架构详解-多租户、多协议兼容、分账与互联互通功能实现
  • git bash在github的库中上传或更新本地文件
  • SOUI基于Zint生成Code 39码
  • 【面试】网络安全常问150道面试题
  • Vue 2 + Webpack 项目中集成 ESLint 和 Prettier
  • 前端包管理器的发展以及Npm、Yarn和Pnpm对比
  • Netty源码解析之异步处理(二):盛赞Promise中的集合设计
  • 三、k8s pod详解
  • SQLMesh系列教程-3:SQLMesh模型属性详解
  • 算法04-希尔排序
  • Windows搭建Docker+Ollama+Open-WebUI部署DeepSeek本地模型
  • GPT和BERT
  • /etc/profile vs ~/.bashrc:如何正确使用?