Как отобразить ltree в nested set PostgreSQL?

Добрый день.

Есть таблица с ltree-структурой и ей нужно перевести в nested set.

StructureLtree(id INT PRIMARY KEY, value TEXT, path ltree);
    
    -- Данные:

    pk |  value  |  path  |
    0  |   'A'   |   ''   |
    0  |   'B'   |   '1'  |
    0  |   'C'   |   '2'  |
    0  |   'D'   |  '1.3' |
    0  |   'E'   |  '1.4' |
    0  |   'F'   |  '1.5' |
    0  |   'G'   |  '2.6' |
    0  |   'H'   |  '2.7' |


StructureSets(id INT PRIMARY KEY, value TEXT, lft INT, rgt INT);

, где левая и правая граница узла соответствует правилам определения вложенного множества.
То есть на выходе получить что-то вроде
-- Данные:

    pk |  value  |  lft  |  rgt  |
    0  |   'A'   |   1   |   16  |
    1  |   'B'   |   2   |   9   |
    2  |   'C'   |   10  |   15  |
    3  |   'D'   |   3   |   4   |
    4  |   'E'   |   5   |   6   |
    5  |   'F'   |   7   |   8   |
    6  |   'G'   |   11  |   12  |
    7  |   'H'   |   13  |   14  |


Может кто-нибудь подсказать идею?
  • Вопрос задан
  • 401 просмотр
Пригласить эксперта
Ответы на вопрос 1
@aol-nnov
Есть клёвый дядька на просторах интернетов - Bill Karwin. Он писал про укладывание разных деревьев в реляционные таблицы.
А еще у него книга есть "SQL Antipatterns. Avoiding the Pitfalls of Database Programming" там про деревья тоже есть.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
18 мая 2024, в 21:07
5000 руб./за проект
18 мая 2024, в 20:58
5000 руб./за проект
18 мая 2024, в 20:53
500 руб./за проект