找回密码
 立即注册

QQ登录

只需一步,快速开始

飞天

初级会员

42

主题

100

帖子

324

积分

初级会员

积分
324
飞天
初级会员   /  发表于:2024-6-26 17:18  /   查看:52  /  回复:1
1金币
我想写一个数据库查询语句,能够列出每一个角色所含的下层角色(含下层的下层。。。。直到最底层),自已写出来都不对。

有谁写过能分享下吗
------------------------------------------------------------------------------------------------

WITH RecursiveRoles AS (  
    -- 基础情况:选择所有顶级角色(没有父角色的角色)  
    SELECT RoleId, RoleName, RoleId AS OriginalRoleId, 0 AS Level  
    FROM webpages_Roles  
    WHERE RoleId NOT IN (SELECT InheritedRoleId FROM role_inherited)  
  
    UNION ALL  
  
    -- 递归部分:选择所有子角色  
    SELECT ri.InheritedRoleId, wr.RoleName, rr.OriginalRoleId, rr.Level + 1  
    FROM role_inherited ri  
    INNER JOIN webpages_Roles wr ON ri.InheritedRoleId = wr.RoleId  
    INNER JOIN RecursiveRoles rr ON ri.RoleId = rr.RoleId  
)  
SELECT L.Level, L.OriginalRoleId, R.RoleName, L.RoleId, L.RoleName  
FROM RecursiveRoles L left outer join  webpages_Roles R ON L.OriginalRoleId = R.RoleId
--WHERE L.OriginalRoleId <> L.RoleId
ORDER BY L.Level, R.RoleName,  L.RoleName;

1 个回复

倒序浏览
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:前天 10:07
沙发
大佬,sql我们不是很擅长哈,不过看您的这个需求,可以考虑使用服务端命令递归去查询,可以参考下方的帖子


一看就会,超有用活字格技能:一百零五、活字格的更多可能性,用服务端命令实现递归
https://gcdn.grapecity.com.cn/showtopic-83594-1-1.html
(出处: 葡萄城开发者社区)


或者您也可以在网上查找相关的sql语句去做


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部