从sqlite中的树结构中的数据库中获取数据

时间:2013-12-25 07:56:23

标签: android mysql sql database sqlite

在我的应用程序中,我有一个树形结构表,我想知道如果我可以通过简单地应用单个查询从sqlite数据库中获取树结构数据。目前我正在使用for循环手动删除它并且能够满足我的要求但是我不满意这种方法,因为它更复杂,可能是耗时的等等。

我的表格结构如下,

parent_id |  cat_id

  null    |   1
   1      |   2
   1      |   3
   1      |   4
   4      |   5
   4      |   6

所以,现在上面是我的表结构,我想获取树结构,如, 如果我在查询中将parent_id作为1传递,那么它应该返回2,3,4,5,6,因为11, 2, 3, 4的父级,而45,6的父级而且4也是1

的孩子

所以,我想要的输入和输出,

input    output

  1     2,3,4,5,6
  4     5, 6

那么,有一种简单的方法可以通过使用sqlite查询来实现上面的树结构吗?

使用sqlite查询无法实现此目的,我需要通过手动循环所有类别ID来遵循当前使用它的方法或方法。

2 个答案:

答案 0 :(得分:1)

您可以使用group_concat方法,因为它在sqlite中可用。

对于您的问题,我创建了一个名为Trans的表,并添加了parent_idcat_id列。

select parent_id, group_concat(cat_id) from trans group by parent_id;

我在下面提到了这样的表格。

enter image description here

我得到了这样的结果:

enter image description here

希望这会对你有所帮助。

答案 1 :(得分:1)

我没有从sqlite本身找到任何解决方案,因此创建了一个算法,通过迭代每个id和amp;来创建树结构。在其sub_ids上并写入数据库。

我经历了Closure Tables,这给出了我期待的解决方案

关闭表的更多参考 -

http://technobytz.com/closure_table_store_hierarchical_data.html http://karwin.blogspot.in/2010/03/rendering-trees-with-closure-tables.html