【发布时间】:2014-06-23 09:05:47
【问题描述】:
现在我可以在我的 android 应用程序中实现 sqlite3 3.8.4.3,我发现了一个很棒的库名称 sqlcipher,:)
现在我再次尝试在 android 应用程序中实现递归函数;
我从“cmd”窗口尝试(递归函数):
我创建一个表:
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');
然后我运行一个现在可用于 sqlite 3.8 的递归查询:
WITH RECURSIVE
under_alice(name,level) AS (
VALUES('1','0')
UNION ALL
SELECT tree.id_child, under_alice.level+1
FROM tree, under_alice
WHERE tree.id_boss=under_alice.name
ORDER BY 2 DESC
)
SELECT substr('..........',1,level*3) || name FROM under_alice;
奇怪的结果:
1
...2
......4
......P1
...3
......8
......P2
为什么选择树的末尾每组的第 2 行值? 如何进行查询,结果应该是这样的?
1
...2
......P1
......4
...3
......P2
......8
【问题讨论】:
-
为什么 ORDER BY 按指定列(仅)排序?
-
我是一个非常没有编程经验的学生,我的英语也不是很好,所以我需要很长时间才能理解每个代码,
-
有什么办法让它像我想要的那样工作吗?