【发布时间】:2016-06-14 08:52:19
【问题描述】:
我有一个问题: 表一:
SELECT OrgNode as 'hierarchyid'
, OrgLevel as "non-type '
, UniCODOBJ as 'uniqueidentifier'
, BitREQUIRED as "bit"
, StrField as 'nvarchar (50)'
, StrTITLE_FIELD as 'nvarchar (50)'
, IntCODE_LENGTH as 'int'
OF BOX_HIERARCHY
我有疑问:
DECLARE @CurrentNode hierarchyid
SELECT @ CurrentNode = OrgNode
OF BOX_HIERARCHY
where uniCODOBJ = 'CBC33732-2E4C-4103-887A-B968E53C0E05';
SELECT OrgNode, OrgNode.ToString ()
, OrgLevel
, uniCODOBJ
, bitREQUIRED
, strField
, strTITLE_FIELD
, intCODE_LENGTH
of BOX_HIERARCHY
where OrgNode.IsDescendantOf (@CurrentNode) = 1
但是,这个查询返回:
OrgNode OrgNode.string OrgLevel BitRequired
0x78 / 3/1 1
0x7AC0 / 3/1/2 1
0x7AD6 / 3/1/1/3 0
0x7AD6B0 / 3/1/1/1/4 0
0x7AD6B580 / 3/1/1/1/1/5 1
0x7AD6B5AC / 3/1/1/1/1/1/6 1
因为 OrgNode -> 0x78 有 uniCODOBJ: CBC33732-2E4C-4103-887A-B968E53C0E05
我的问题在哪里? 只需要直子:
与 OrgNode -> 0x78 只有 1 个直接子节点
OrgNode OrgNode.string OrgLevel BitRequired
0x78 / 3/1 1
0x7AC0 / 3/1/2 1
与 OrgNode -> 0x7AC0 与 3 个可能的直接子代 OrgNode OrgNode.string OrgLevel BitRequired
0x7AC0 / 3/1/2 1
0x7AD6 / 3/1/1/3 0
0x7AD6B0 / 3/1/1/1/4 0
0x7AD6B580 / 3/1/1/1/1/5 1
我有兴趣获取用于获取所有可能的直接子级的查询 但该查询返回我所有亲戚的孩子 如果我必须经历 3 个级别,如 0x7AD6B5AC 案例中的第 6 级,3 个级别至少为 0x78 并为 0x78 进行咨询,它会返回所有我,我不在乎。
【问题讨论】: