2010-10-13 73 views
2

我正在使用SQLIte来保存一些数据的Java应用程序的上下文。我的一个SQL表的结构如下如何按照层次级别对SQL请求的结果进行排序

CREATE TABLE containers (ID INT PRIMARY KEY, NAME TEXT, PARENT_ID INT) 

我需要检索按层次结构层次序的所有容器。也就是说,我首先需要没有父项的所有容器(PARENT_ID == -1),然后是具有1个祖先,然后是2个祖先等的容器......

是否有任何方法可以通过SQL请求如下所示,以这种方式对ResultSet对象进行排序。

SELECT * from container ORDER BY (**"What to put here ???"**) 

编辑我知道我能做到这一点在Java中后,但我不关心这个解决方案。

+0

的样子PARENT_ID refernce表。 – adopilot 2010-10-13 11:47:40

+0

这是同一张桌子! – 2010-10-13 12:01:05

回答

3

没有办法直接在标准SQL中实现这一点。 Oracle具有“开始”,“连接”等语法,并通过“级别”支持它。

或者,如果你可以改造你的数据,你可以转而使用嵌套集合:http://en.wikipedia.org/wiki/Nested_set_model

+0

对于嵌套集合+1。有几种方法可以处理在SQL表中存储分层结构和树信息;每种方法都需要你提前做一些设计,并做出权衡来完成你想要的 – 2010-10-13 11:48:26

相关问题