我有一个带有层次结构列的表,其中包含用冒号分隔的数字,以及当前节点及其父节点的数量:
id = '3:234:657:978'
currNode = 978
parent = 657
我还有一个查询,它返回 id 和其他表中的一些其他列,但缺少一些链接,例如返回 2 行,一个 id 为3:234
,另一行 id 3:234:567:890
。我需要带有3:234:567
id 的行来形成层次结构,但它没有返回。
如何加入表格以便获得缺失的节点(id 以外的字段为 NULL),但只有缺失的节点(不包括不需要形成层次结构的节点,例如在返回结果的树下方) ?
编辑:样本数据:
CREATE TABLE ids (
id VARCHAR(100)
, currNode INT PRIMARY KEY
, parent INT
, name VARCHAR(50)
);
CREATE TABLE someotherdata (
data VARCHAR(10)
, currnode INT
);
INSERT ALL
INTO ids(id, currnode, parent, name)
VALUES('3', 3, NULL, 'Node1')
INTO ids(id, currnode, parent, name)
VALUES('3:4', 4, 3, 'Node2')
INTO ids(id, currnode, parent, name)
VALUES('3:4:5', 5, 4, 'Node3')
INTO ids(id, currnode, parent, name)
VALUES('3:4:5:6', 6, 5, 'Node4')
INTO ids(id, currnode, parent, name)
VALUES('3:4:5:6:7', 7, 6, 'Node5')
SELECT * FROM dual; COMMIT;
INSERT ALL
INTO someotherdata (name, id)
VALUES('data1', '3:4')
INTO someotherdata (name, id)
VALUES('data2', '3:4:5:6')
SELECT * FROM dual; COMMIT;
期望的结果(id 作为查询的参数,这里它等于'3'):
id name data
3 Node1 NULL
3:4 Node2 data1
3:4:5 Node3 NULL
3:4:5:6 Node4 data2
(3:4:5:6:7 被排除在结果之外,因为它不需要与返回数据的记录形成层次结构)