#sql #oracle #plsql #graph-traversal
Вопрос:
У меня есть таблица, каждая запись в которой представляет собой ребро между узлами в графике. Столбцы from_node и to_node представляют идентификатор каждого узла на графике. Структура таблицы ребер аналогична приведенной ниже:
from_node | to_node |
---|---|
1 | 2 |
1 | 3 |
4 | 5 |
6 | 7 |
7 | 8 |
Теперь я хочу найти всю связанную базу подграфов в приведенной выше таблице. Как я могу пересечь график и пометить каждый подграф уникальным номером? Мне нужен вывод, как показано в таблице ниже:
узел | Группа |
---|---|
1 | 0 |
2 | 0 |
3 | 0 |
4 | 1 |
5 | 1 |
6 | 2 |
7 | 2 |
8 | 2 |
Комментарии:
1. что вы ожидаете в качестве вывода в данном примере ввода?
2. Я обновляю входную таблицу и добавляю в нее несколько строк, затем я добавил свои ожидаемые результаты для входной таблицы.
3. Ваш пример очень прост и может быть решен с помощью простого рекурсивного запроса (найдите примеры на этом сайте). Теперь, если у вас есть более сложные графики, вам лучше взглянуть на графический движок в Oracle DB
4. Спасибо, мне нужен этот простой запрос
![]()