Как сделать рекурсивный запрос с возвращением всех пройденных элементов?
Есть таблица с полями name, from_id, to_id. Как сделать запрос на входе которого приходит from_id и рекурсивно пройти по всей таблице и собрать все to_id в том числе и для всех дочерних элементов?
from_id и to_id ссылаются на id другой таблицы(id, name). В данной таблице содержаться связи from_id и to_id и я хочу рекурсивно собрать все to_id для заданного from_id, потом все to_id для полученных id на первом этапе и так далее, пока не будет связей
with recursive q as (
select * from tes where from_id = 1
union all
select tes.* from tes, q where tes.from_id = q.to_id
)
select * from q order by from_id, to_id