Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 树选择sqlite_Android_Sqlite_Recursion_Tree - Fatal编程技术网

Android 树选择sqlite

Android 树选择sqlite,android,sqlite,recursion,tree,Android,Sqlite,Recursion,Tree,我在android中使用sqlite,需要进行选择以获取所有家长及其孩子的,例如: id || parent_id || child_id || name 1 1 1 jhon 2 1 2 helen 3 2 3 barack 4 1 4 manuel 5 3 5

我在android中使用sqlite,需要进行选择以获取所有家长及其孩子的,例如:

id || parent_id || child_id || name

1     1            1           jhon
2     1            2           helen
3     2            3           barack
4     1            4           manuel
5     3            5           gaga
结果应该是:

jhon
helen
manuel
barack
gaga
所以,我需要一个requursive sql,但通过谷歌搜索我发现sqlite支持CTE,无论如何,我甚至可以使用递归java方法按父asc顺序返回所选名称的列表


请注意,树的深度可以超过2级

我不知道如何解释你的表格。每个节点都有一个ID,对吗;以及根节点?指向自身的唯一父节点id?。孩子的身份证是什么?不能有多个孩子吗

在处理任意深度的递归结构时,如果树不经常更改,并且查询需要快速,请创建一个支持表,例如,祖先闭包,详细说明所有父子关系的闭包:

ancestor_id, child_id
并确保每当基表发生更改时,都会对其进行更新,并为位于另一个节点下方的每个节点添加一行。当您需要查找某个节点的所有父节点和/或子节点时,请加入祖先_闭包表。我认为sqlite不支持在insert/delete/update触发器上执行的存储过程,因此必须手动触发更新

SQL擅长于简单的关系,而不是任意的图形

id为prymary key autoincrement,但父项id和子项id不唯一。这是一个非定向图1->1,2,4 | | 2->3 | | 3->5