Разбираюсь с рекурсивными запросами, вот пример: Код (Text): create table employees ( id serial primary key, name varchar, manager int references employees ); insert into employees (id, name, manager) values (1, 'Kevin Wilkerson', null), (2, 'Darin Montgomery', 1), (3, 'Joyce Campbell', 1), (4, 'Alfred Brewer', 2), (5, 'Carroll Jimenez', 3), (6, 'Jamie Sims', 3), (7, 'Nettie Lawrence', 5); Выборка: Код (Text): with recursive managers as ( select id, name, manager from employees where name = 'Nettie Lawrence' union all select e.id, e.name, e.manager from employees as e inner join managers as m on e.id = m.manager ) select id, name, manager from managers; Во временной таблице выбирается строка, в которой name = Nettie Lawrence Потом эта псевдо таблица, объединяется с настоящей. У корневого элемента, manager = 5. Сначала (7, 'Nettie Lawrence', 5); сравнивается с (5, 'Carroll Jimenez', 3) И получается, что после каждой итерации, корневой элемент меняется, правильно ли я понял это? То есть, во втором шаге, "where name = 'Nettie Lawrence'" заменяется на Carroll Jimenez? И потом уже (6, 'Jamie Sims', 3), сравнивается с (3, 'Joyce Campbell', 1), и так далее.