我有我解决不了问题的SQL的SQL Server:查询多值表递归
有2台mms
和mms_mv
,它们通过object_id
联系。
的mms_mv
是多值表和内容是组成员和组管理器,它也可以是其它基团。
这将运行SQL Server上
mms
:
|object_id|attribute_type|objectSid|
| 1 |user | a |
| 2 | group | b |
| 3 | group | c |
| 4 | group | d |
| 5 | group | f
mms_mv
:
|object_id|attribute_name|reference_id|
| 2 | member | 1 |
| 3 | manager | 1 |
| 4 | manager | 2 |
我试图找出用户可以通过嵌套组管理直接或间接哪些群体。
在上面的例子中,用户(1)是组2的成员,组2是组4的管理者 用户1是组3的管理者。
哪些群体可以由用户来管理?
所以我需要输出为第3组和4
select
accountname, objectsid, mms1.reference_id as ManagerID,
mms2.object_id
from
dbo.mms_mv_link as mms1 with (nolock)
inner join
dbo.mms_metaverse as mms2 with (nolock) on mms1.object_id = mms2.object_id
where
mms2.object_type ='group'
and mms1.attribute_name = 'manager'
and mms1.reference_id in (1, 3)
这是最好的我想出了找出我提交的所有组ID和用户ID的这是一组的经理。我用了一个其他的查找来获得组的用户是。
我的问题是嵌套组,由长期的思考和谷歌上搜索,我不知道,如果它甚至可能创造这样的查询。
我可以找到所有组的用户是成员,但我还需要在这些组成员组。
嗯,我很高兴,如果有人有一些想法或提示,我推测这一个。
我,如果你有一个很好的SQL本书涵盖如此复杂的查询,建议,甚至高兴。
谢谢大家的帮助。
难道mms_vm.object_id是的object_id在MMS中的一个的情况下? Ans也是那个reference_id也是mms中的object_id之一吗?只是想清楚这些关系。 – 2014-11-21 14:09:09
我不认为这是数据库查询的任务。递归会导致非常复杂的情况。我建议你对你的编程语言进行这种分析。 – ericpap 2014-11-21 14:09:26
您可以使用C#或其他语言编写递归函数来收集用户ID并确定用户权限 – ericpap 2014-11-21 14:10:32