на выходе мне нужен список id:
1 -> 2-> *(null) : 1,2
Но ещё есть небольшая проблема:
4->5->6->4... (и тут начинается вечный цикл, как сделать проверку?) : 4,5,6
Решение, которое работает, но уходит в вечный цикл и очень тяжелое....
WITH RECURSIVE r AS(
SELECT id ,id_parent
FROM table
WHERE teil_sachnr = '1'
UNION ALL
SELECT table.id,table.id_parent
FROM w_teil
JOIN r ON table.id=r.id_parent
)
SELECT * FROM r;
Собственно вечный цикл может быть в самих данных и соответственно надо бы ограничивать либо рекурсивный cte (в мс sql - это maxrecursion) либо разворачивать рекурсию в цикл и там аналогично контролировать "бесконечное зацикливание" тем или иным способом (ограничение глубины, разрыв при отсылке parent в уровень ниже.