V10如何用Oracle实现不同角色的人,查看数据不同

比如角色有6种角色1,角色2,角色3,角色4,角色5,角色6

数据表是3张表A,表B,表C

角色1~3用表A的数据(角色1是用表A的字段c来进行筛选,角色2是用表A的字段d来筛选,角色3是用表A的字段e来筛选数据)

角色4,5用表B的数据

角色6是用表C的数据

FineReport yunliwuli 发布于 2022-10-24 13:27 (编辑于 2022-10-24 13:27)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
用户k6280494Lv6资深互助
发布于2022-10-24 13:33

${if(or(fr_authority='角色1',fr_authority='角色2',fr_authority='角色3'),"selcet * from 表A where xxx",if(or(fr_authority='角色4',fr_authority='角色5'),"selcet * from 表B where xxx",if(fr_authority='角色5',"selcet * from 表C where xxx","")))}

最佳回答
0
snrtuemcLv8专家互助
发布于2022-10-24 13:29

这个建议,现在Oracle先直接把数据处理成一个视图,然后帆软直接根据角色在视图过滤数据,这样最高效

最佳回答
0
用户S5182147Lv6中级互助
发布于2022-10-24 13:42

可以参考一下:

select

*

from 表

where 1=1

${if(fine_username = "角色1" || fine_username = "角色2" || fine_username = "角色3","and 字段A in (select distinct 字段 from 表A where 角色名称 = '"+fine_username+"')",

if(fine_username = "角色4","and 字段B in (select distinct 字段 from 表B where 角色名称 = '"+fine_username+"')","and 字段C in (select distinct 字段 from 表C where 角色名称 = '"+fine_username+"')"))}

  • 4关注人数
  • 296浏览人数
  • 最后回答于:2022-10-24 13:42
    请选择关闭问题的原因
    确定 取消
    返回顶部