Найти root родителя от ребенка в oracle sql - PullRequest
1 голос
/ 19 марта 2020

Мне нужно найти верхнего родителя в иерархии, где я предоставляю ребенка. самый верхний родитель будет, когда id = ref

пример таблицы:

+--------------------+
| id parent_id ref   |
+--------------------+
| 1     1      1     |
| 2     1      1     |
| 3     2      1     |
| 4     3      1     |
| 5     4      2     |
+--------------------+

Мне нужно получить самого верхнего родителя (id 1), когда я введу id 4

я не могу просто выбрать * из таблицы, где ref = id, поскольку в той же таблице может быть другая иерархия, поэтому запрос должен выполнить:

начать с идентификатора, например, 4 check id_parent = ref, если не равно, то использовать parent_id в качестве нового идентификатора и проверяет, является ли он id_parent = ref и так далее, пока parent_id = ref

Кроме того, идентификатор 5 имеет другую иерархию

Любая помощь очень ценится Спасибо

...