Oracle查询允许父行的继承值,但覆盖父值的父值

时间:2013-09-26 19:00:23

标签: sql oracle

我有一个Profile 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

现在我需要把它弄平,我不知道怎么做,或者甚至可能。

任何帮助都将不胜感激。

0 个答案:

没有答案