ID parent_id name --------------------- 1 2 first 2 4 second 3 3 third 4 5 fourth 5 - fifth
Ancestors list of first should be (2, 4, 5)
first
(2, 4, 5)
with name_tree as ( select id, parent_id, name from the_unknown_table where id = 1 -- this is the starting point you want in your recursion union all select c.id, c.parent_id, c.name from the_unknown_table c join name_tree p on p.parent_id = c.id -- this is the recursion ) select * from name_tree where id <> 1; -- exclude the starting point from the overall result
SQLFiddle: http://sqlfiddle.com/#!3/87d0c/1
2.1m questions
2.1m answers
60 comments
57.0k users