#sql #oracle #recursive-query #adjacency-list
#sql #Oracle #рекурсивный-запрос #список смежности
Вопрос:
У меня есть такая таблица
name | time
a | 1:00
b | 1:05
a | 1:10
c | 1:15
d | 1:20
b | 1:29
e | 1:30
a | 1:31
f | 1:36
Теперь я получаю каждый раз и хочу получить последовательность классов на 5 минут выше и ниже.
a : a->b
b : a->b->c
a : b->a->c
c : a->c->d
d : c->d
. .
. .
. .
и я хочу сохранить эту последовательность в списке смежности. Как показано в таблице ниже
parent_name | child_name | graph id
a | b | 1
a | b | 2
b | c | 2
b | a | 3
a | c | 3
Кто-нибудь может сказать мне, как я могу это сделать, используя SQL-запросы?
Комментарии:
1. Какую СУБД вы используете? Postgres? Oracle?
2. Я использую СУБД Oracle
Ответ №1:
Я думаю, что вы ищете модель вложенного набора. Это задокументировано в wiki. Реализация и примеры являются общими и работают со всеми SQL-совместимыми движками, но в Oracle вы можете настроить его так, чтобы вы могли воспользоваться предложением CONNECT BY в инструкции SELECT .