我需要从内容存储及其父级中提取 cognos 组。我找到了查询,但如果一个组包含其他组,它就不起作用。我尝试过 MotioPi,但它没有显示我需要的信息
萨缪尔
我的询问:
with RecursiveCTE
as(
SELECT
cmobjnames.cmid as object_id,
cmobjnames.name objnames,
CAST(cmobjnames.name AS VARCHAR(MAX)) AS TreePath,
cmobjects.PCMID as parent_id
FROM cmobjnames
INNER JOIN cmobjects
ON cmobjnames.cmid = cmobjects.cmid
where cmobjnames.cmid=104 -- id membro padre directory Cognos
and cmobjnames.ISDEFAULT=1
UNION ALL
SELECT
cmobjnames.cmid as object_id,
cmobjnames.name objnames,
CAST(H.TreePath + '\'
+ CAST(cmobjnames.name AS VARCHAR(100)) AS VARCHAR(MAX)) as TreePath,
cmobjects.PCMID as parent_id
FROM cmobjnames
INNER JOIN cmobjects
ON cmobjnames.cmid = cmobjects.cmid
INNER JOIN RecursiveCTE H
ON H.object_id =cmobjects.PCMID
where cmobjects.classid IN ( 54,8,26) -- seleziono folder , gruppi, ruoli
and cmobjnames.ISDEFAULT=1
)
SELECT objnames as Name
, object_id
, parent_id
, TreePath
FROM RecursiveCTE
INNER JOIN cmobjects
ON object_id = cmobjects.cmid
where cmobjects.classid IN ( 54,26) -- seleziono gruppi, ruoli
免责声明:
不支持也不建议侵入内容存储数据库。如果出现问题,IBM 和我都不会帮助您。使用此信息的风险由您自行承担。
假设:
“父母”这个词不合适。角色和组成员身份通过 CMREFORD1 中定义的对象关系来记录。
with
objname as (
select o.CMID
, coalesce(n2.name, n.NAME) as 'NAME'
from CMOBJECTS o
left outer join CMOBJNAMES n on n.CMID = o.CMID
and n.LOCALEID = 92
left outer join CMOBJNAMES n2 on n2.CMID = o.CMID
and n2.LOCALEID = 118
)
select MemberName.NAME as 'Member'
, GroupName.NAME as 'Group'
from CMOBJECTS MemberObject
inner join objname MemberName on MemberName.CMID = MemberObject.CMID
inner join CMCLASSES MemgerClass on MemgerClass.CLASSID = MemberObject.CLASSID
inner join CMREFORD1 r on r.REFCMID = MemberObject.CMID
inner join CMOBJECTS GroupObject on GroupObject.CMID = r.CMID
inner join objname GroupName on GroupName.CMID = GroupObject.CMID
where MemgerClass.NAME = 'group'
and MemberName.NAME = 'All Authenticated Users'