У меня возникают некоторые проблемы при разработке документации PostgreSQL для рекурсивных запросов, и я задаюсь вопросом, сможет ли кто-нибудь предложить следующее:
Вот данные:
Table "public.subjects"
Column | Type | Collation | Nullable | Default
-------------------+-----------------------------+-----------+----------+--------------------------------------
id | bigint | | not null | nextval('subjects_id_seq'::regclass)
name | character varying | | |
Table "public.subject_associations"
Column | Type | Collation | Nullable | Default
------------+-----------------------------+-----------+----------+--------------------------------------------------
id | bigint | | not null | nextval('subject_associations_id_seq'::regclass)
parent_id | integer | | |
child_id | integer | | |
Здесь у «субъекта» может быть много родителей и много детей.Конечно, на верхнем уровне у субъекта нет родителей, а на нижнем - детей.Например:
parent_id | child_id
------------+------------
2 | 3
1 | 4
1 | 3
4 | 8
4 | 5
5 | 6
6 | 7
Мне нужно начать с child_id, чтобы получить всех предков, а с parent_id - всех потомков.Поэтому:
parent_id 1 -> children 3, 4, 5, 6, 7, 8
parent_id 2 -> children 3
child_id 3 -> parents 1, 2
child_id 4 -> parents 1
child_id 7 -> parents 6, 5, 4, 1
Хотя мне кажется, что есть много примеров подобных вещей, у меня возникают проблемы с их пониманием, поэтому любые предложения, которые я могу попробовать, будут приветствоваться.