Oracle11g Oracle分层查询:具有两个节点属性NodeId和NodeType
在下面的用例中,我希望使用分层查询来获得所需的结果 在我的用例中,我有两种类型的节点,比如“A”和“B”。因此,节点的唯一标识符是其ID和类型 现在的问题是,当两个具有相同Id和不同类型的节点时,当我在Id上调用connect by子句时,我也会得到其他类型节点的子节点(如果该节点的Id相同) 此特定用例的表中数据:Oracle11g Oracle分层查询:具有两个节点属性NodeId和NodeType,oracle11g,hierarchical-data,recursive-query,Oracle11g,Hierarchical Data,Recursive Query,在下面的用例中,我希望使用分层查询来获得所需的结果 在我的用例中,我有两种类型的节点,比如“A”和“B”。因此,节点的唯一标识符是其ID和类型 现在的问题是,当两个具有相同Id和不同类型的节点时,当我在Id上调用connect by子句时,我也会得到其他类型节点的子节点(如果该节点的Id相同) 此特定用例的表中数据: 1, 'A', NULL, null 2, 'A', 1, 'A' 3, 'A', 1, 'A' 2, 'B', NULL, null 3, '
1, 'A', NULL, null
2, 'A', 1, 'A'
3, 'A', 1, 'A'
2, 'B', NULL, null
3, 'B', 2, 'B'
现在我触发以下查询(该查询没有给出正确的结果)
我也尝试了下面的查询,但结果还是错误的
SELECT * FROM TREETEST
START WITH PARENTID = 1 AND PARENTTYPE = 'A'
CONNECT BY PRIOR nodeid = PARENTID AND NODETYPE = PARENTTYPE;
请提供正确的查询,并解释第二个查询不起作用的原因
预期产出:
2 A 1 A
3 A 1 A
说明:previor
是应用于列名的运算符,而不是应用于整个条件
SELECT * FROM TREETEST
START WITH PARENTID = 1 AND PARENTTYPE = 'A'
CONNECT BY PRIOR nodeid = PARENTID AND NODETYPE = PARENTTYPE;
2 A 1 A
3 A 1 A
SELECT *
FROM treeTest
START WITH parentId = 1
AND parentType = 'A'
CONNECT BY PRIOR nodeId = parentId
AND PRIOR nodeType = parentType
;