У меня есть иерархическая структура (родитель-ребенок), которая будет использоваться для авторизации. У меня есть простая схема, в которой хранятся роли вместе с идентификатором их родителя. Теперь мне присваивается role_id, из которого я хочу получить всех родителей от этой роли.Возможно ли получить все родительские роли определенной роли в SQL?
К примеру, у меня есть таблица вроде этого:
ROLE_ID ROLENAME IS_PARENT PARENT_ROLE_ID
1 1 ABC CORP Y NULL
2 2 ABC EC Y 1
3 3 ABC WC Y 1
4 4 ABC NY Y 2
5 5 ABC OH Y 2
6 6 NY ORTH N 4
7 7 NY CARD N 4
8 8 OH ORTH N 5
9 9 OH CARD N 5
Теперь, когда я снабжен ROLE_ID
из 8
, запрос должен возвращать мне:
ROLE_ID
1
2
5
8
Поскольку OH ORTH
является ребенок ABC OH
. ABC OH
- ребенок ABC EC
. ABC EC
является ребенком ABC CORP
, я должен получить 1
, 5
, 2
и 1
.
В приведенном выше примере есть только 4 уровня. Но в реальной ситуации может быть много уровней.
Я попытался найти решение для решения этой проблемы и наткнулся на here. Но это особенно важно для Oracle, и это дает мне синтаксическую ошибку при выполнении запросов на Microsoft SQL Server.
Возможно ли это? Я использую Microsoft SQL Server на Microsoft Windows Azure.
У меня ограниченное знание SQL. Пожалуйста, помогите
Благодаря человеку. Работала для меня. :) –