I the context of a Java application I am using SQLIte to persist some data. One of my SQL table has the following structure
CREATE TABLE containers (ID INT PRIMARY KEY, NAME TEXT, PARENT_ID INT)
I need to retrieve all the containers ORDERED by hierarchy level. I.e I want first all the containers without parent (PARENT_ID == -1), then the ones with 1 ancestor, then with 2 ancestors, etc ….
Is there any way to do that with an SQL request such as below to have a ResultSet object sorted in this way.
SELECT * from container ORDER BY (**"What to put here ???"**)
Edit I know I can do that in Java later but I am not interested in this solution.
There isn’t a way to achieve this directly in standard SQL. Oracle has the “start with”, “connect by” syntax and that supports it through “level”.
Alternatively, if you can remodel your data you could instead use nested sets: http://en.wikipedia.org/wiki/Nested_set_model