0

我有一个配置文件 Profile_Permission 权限数据库结构,其中配置文件可以具有父配置文件(在分层结构中),并且配置文件/权限多对多关系有一个“值”列,其中存储了特定配置文件的权限。

要求规定,如果配置文件的父配置文件具有权限,则该子配置文件继承该权限,除非子配置文件专门用不同的值(通常只是真/假)覆盖该权限我的问题是,我需要编写一个查询让我根据配置文件及其父级的权限值确定应授予配置文件哪些权限,并适当地覆盖权限值(如果适用)。

到目前为止我有

select pro.id , pro.name, perm.id, perm.name, pp.permission_value 
from Profile pro 
   join PROFILE_PERMISSION pp on pro.id = pp.profile_id 
   join Permission perm on pp.permission_id = perm.id 
   where pp.profile_id in 
   (select p.Id from profile p start with p.id =6 connect by prior p.parent_id = p.id);

我的结果

ID  NAME        ID    NAME                                          PERMISSION_VALUE
------------------------------------------------------------------------------------
6   CS Tier 3   15    Allow issuance of Instore Credits             true
6   CS Tier 3   17    Allow issuance of Coupons                     true
6   CS Tier 3   14    Allow issuance of Cash Credits                true
6   CS Tier 3   2     Allow access to Customer Service Application  true
6   CS Tier 3   1     Allow access to Security Console Application  true
5   CS Tier 2   25    Cash Credit Limit                             25
5   CS Tier 2   17    Allow issuance of Coupons                     false
5   CS Tier 2   2     Allow access to Customer Service Application  false
5   CS Tier 2   15    Allow issuance of Instore Credits             false
4   CS Tier 1   2     Allow access to Customer Service Application  true
4   CS Tier 1   15    Allow issuance of Instore Credits             true
4   CS Tier 1   17    Allow issuance of Coupons                     true
4   CS Tier 1   19    Allow Invoice Line Cancel                     true
4   CS Tier 1   9     Allow Return Initiation                       true
4   CS Tier 1   16    Allow issuance of Club Credits                true

现在我需要把它弄平,我不知道该怎么做,或者是否有可能。

任何帮助,将不胜感激。

4

0 回答 0