在我的应用程序中,我有一个树形结构表,我想知道如果我可以通过简单地应用单个查询从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
,因为1
是1, 2, 3, 4
的父级,而4
是5,6
的父级而且4
也是1
所以,我想要的输入和输出,
input output
1 2,3,4,5,6
4 5, 6
那么,有一种简单的方法可以通过使用sqlite查询来实现上面的树结构吗?
或
使用sqlite查询无法实现此目的,我需要通过手动循环所有类别ID来遵循当前使用它的方法或方法。
答案 0 :(得分:1)
您可以使用group_concat方法,因为它在sqlite中可用。
对于您的问题,我创建了一个名为Trans
的表,并添加了parent_id
和cat_id
列。
select parent_id, group_concat(cat_id) from trans group by parent_id;
我在下面提到了这样的表格。
我得到了这样的结果:
希望这会对你有所帮助。
答案 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