我有一个基于分层(父子)角色的结构用于授权。我有一个简单的模式,它存储角色及其父级的 id。现在给了我一个role_id,我想从中获取该角色的所有父母。
例如,我有一个这样的表:
ROLE_ID ROLENAME IS_PARENT PARENT_ROLE_ID
1 1 ABC CORP Y NULL
2 2 ABC EC Y 1
3 3 ABC WC Y 1
4 4 ABC NY Y 2
5 5 ABC OH Y 2
6 6 NY ORTH N 4
7 7 NY CARD N 4
8 8 OH ORTH N 5
9 9 OH CARD N 5
现在,当我得到一个ROLE_ID
of8
时,查询应该返回我:
ROLE_ID
1
2
5
8
既然OH ORTH
是ABC OH
. ABC OH
是 的孩子ABC EC
。ABC EC
是 的孩子,ABC CORP
我应该得到1
,5
和.2
1
在上面的示例中,只有 4 个级别。但是,在实际情况下,可能有很多层次。
我尝试用谷歌搜索解决这个问题并在这里偶然发现。但这是 Oracle 特有的,它在 Microsoft SQL Server 上执行查询时会出现语法错误。
这可能吗?我在 Microsoft Windows Azure 上使用 Microsoft SQL 服务器。
我对 SQL 的了解有限。请帮忙