考虑以下(1:N)
关系:
[entity: user] <------ rid key ------> [entity: rid]
.
将两个表中的数据视为:
select * from user;
user-id rid-key
a-basa a
b-basa b
a.a-basa a.a
a.b-basa a.b
a.a.a-basa a.a.a
a.a.b-basa a.a.b
a.b.a-basa a.b.a
a.b.b-basa a.b.b
a.b.b.a-basa a.b.b.a
a.b.b.b-basa a.b.b.b
select * from rid;
rid-key parent-rid enabled
a null true
b null true
a.a a true
a.b a false
a.a.a a.a true
a.b.a a.b true
a.b.b a.b true
a.b.b.a a.b.b true
......
n rows
我需要设计一个输入 a 的单个查询(不是存储过程)user-id
,并考虑以下事实:
如果用户被授予对 a 的访问权限rid
,那么它也可以访问parent rid
给rid
定的 -rid
本身已启用(enabled = true).
这应该一直持续到我们到达root rid
, 即。parent rid
财产是null
。
在上面的示例中,用户可访问的摆脱列表'a.b.b.a-basa'
将是:
a.b.b.a
a.b.b
a.b
和a.a.a-basa
:
a.a.a
a.a
a
我们可以使用单个查询获取此列表吗?任何 sql 供应商都可以。