如何写sql带出finedb帆软角色对应可以查看的有哪些报表

select distinct a.username,a.realname,b.roleid,c.name ,e.parentid,e.displayname,e.path

from  fine_user a

left join fine_user_role_middle b

ON a.id = b.userid

left join FINE_CUSTOM_ROLE c

on c.id = b.roleid

left join fine_authority  d

ON d.roleid = b.roleid

and d.AUTHORITY=2

left join FINE_AUTHORITY_OBJECT  e

on e.id = d.authorityentityid

这是我当前的sql,如果有个角色A有B目录下所有的报表查看权限,这种情况我这sql只会显示一条记录(就是角色A,然后B目录的权限一条),没法展示其目录下的所有报表,要如何修改才能实现效果。

FineReport Mors 发布于 2021-7-23 10:39
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
JackRenLv6初级互助
发布于2021-7-23 16:01(编辑于 2021-7-23 16:01)

with uCte as

(

select a.id,a.displayName,convert(nvarchar(100),'0' )as parentid,sortIndex from finedb.dbo.fine_authority_object a

where displayName in ('项目管理') --目录名称

union all

select k.id,k.displayName,convert(nvarchar(100),k.parentid),k.sortIndex from finedb.dbo.fine_authority_object k

inner join uCte c on k.parentid = c.id and k.path is null

)

select d.name as 角色,b.displayName as 报表名称

from fine_authority c

left join uCte a on c.authorityEntityId=a.id 

join finedb.dbo.fine_authority_object b on a.id=b.parentId

left join FINE_CUSTOM_ROLE d on c.roleId=d.id

where 1=1

and c.roleType='2' and c.authority=2

通过递归的方式,可以实现此要求。

  • 2关注人数
  • 525浏览人数
  • 最后回答于:2021-7-23 16:01
    请选择关闭问题的原因
    确定 取消
    返回顶部