Как я могу go уровень за уровнем проверять родителя, начиная с заданного нижнего листа до достижения root? - PullRequest
0 голосов
/ 28 мая 2020

Как я могу проверить родителей до parent_id, который равен NULL (root). Как я могу go уровень за уровнем проверять родителя, начиная с заданного нижнего листа до достижения root?

Псевдокод:

Select * 
from parameter_node 
Where name = 'test1111' 
  AND parent.id = 3 
  AND parent.parent.id= 2 
  AND parent.parent.parent.id=1 
  AND parent.parent.parent.parent.id IS NULL

enter image description here

1 Ответ

0 голосов
/ 28 мая 2020

Если под «проверить» вы имеете в виду, просто получить все родительские узлы, вы можете сделать это с помощью рекурсивного общего табличного выражения:

with recursive tree as (
  select * 
  from parameter_node 
  where name = 'test1111' 
  union all 
  select p.*
  from parameter_node p 
    join tree t on t.parent_id = p.id
)
select *
from tree;

Выше приведен стандартный ANSI SQL

Онлайн-пример

...