【发布时间】:2014-05-07 15:30:38
【问题描述】:
从这个很棒的answer,现在我可以正确地实现递归查询了,
我还有一个问题,
第一:
我创建一个表:
CREATE TABLE tree(
id_tree integer PRIMARY KEY AUTOINCREMENT,
id_boss TEXT,
id_child TEXT,
answ TEXT);
插入一些值:
INSERT INTO tree(id_boss,id_child,answ) VALUES('1','2','T');
INSERT INTO tree(id_boss,id_child,answ) VALUES('1','3','F');
INSERT INTO tree(id_boss,id_child,answ) VALUES('2','P1','T');
INSERT INTO tree(id_boss,id_child,answ) VALUES('2','4','F');
INSERT INTO tree(id_boss,id_child,answ) VALUES('3','P2','T');
INSERT INTO tree(id_boss,id_child,answ) VALUES('3','8','F');
然后我从这个很棒的answer 运行递归查询:
WITH RECURSIVE
under_alice(name,level,order_nr) AS (
VALUES('1','0',0)
UNION ALL
SELECT tree.id_child, under_alice.level+1, tree.id_tree
FROM tree, under_alice
WHERE tree.id_boss=under_alice.name
ORDER BY 2 DESC, 3
)
SELECT substr('..........',1,level*3) || name FROM under_alice;
结果会是这样的:
1
...2
......P1
......4
...3
......P2
......8
“已编辑” ------>
我的问题是,这是否可以扭转它, 例如我选择 id_child = 'P2',结果将是:
P2
3
1
如果我选择 id_child = 'P1':
P1
2
1
【问题讨论】:
-
节点
1与2和3不在同一级别。您真的希望它们具有相同的...缩进吗? -
@cl no ,我只是想显示数值,而不是级别,我编辑了我的问题,请再次查看我的问题。
标签: sqlite