Добавить столбец с родительским ID

Рейтинг: 0Ответов: 1Опубликовано: 13.02.2023

Есть набор данных, мне нужно определить связь родитель - ребенок.

Для этого нужно добавить столбец parent_id с id родителя, но я не пойму алгоритм, как указать нужного родителя по условию вхождения подстроки. PostgreSQL 12.1

См.Рис

Aggregate - количество знаков в коде

Например:

  • code 20 самый верхний уровень, parent_id = 0
  • у code 2001 родитель 20, записываем в parent_id=1
  • у code 200110 родитель 2001, записываем в parent_id=2

у code 20011010 родитель 200110, записываем в parent_id=10 и тд.

create temp table groups (id serial,code int,aggregate int);

insert into groups (code,aggregate) values
(20,2),
(2001,4),
(2002,4),
(2003,4),
(2004,4),
(200110,6),
(200190,6),
(200210,6),
(200290,6),
(20011010,8),
(20021090,8);

Ответы

▲ 0

Для начала создаёте вычисляемый столбец:

ALTER TABLE
    ADD COLUMN code_str varchar(8) GENERATED ALWAYS AS to_char(code) STORED;

И сам новый столбец parent_id с foregin key на id.