@AMEntertainment

Как сделать запрос для отбора иерархически связанных строк в одной таблице?

Есть одна таблица org, и столбцы id_org, name, parent_id. в столбце parent_id указывается id_org вышестоящей организации(подразделения). Как отобрать из таблицы все дочерние подразделения, например организации с id_org=1, а также дочерние строки дочерних строк.
id_org	name			parent_id
1	организация1			0
2	подразделение1-1		1
3	подразделение1-2		1
4	подразделение1-2-1	2
5	организация2			0
6	подразделение2-1		5
7	подразделение2-2		5
Следующий запрос саму строку с id_org=1 не выводит, выводит дочерние подразделения только до первого уровня, т.е. дочерние дочерних не выводит, например не выводит "подразделение1-2-1", который является дочерним строке "подразделение1-1"

SELECT org1.*
FROM org AS org1
     JOIN org AS org2
       ON (org2.id_org = org1.parent_id)
WHERE org2.id_org = 1;
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
Предлагаю рассмотреть переход на специальный тип данных: MS SQL: hierarchyid — иерархия по-новому. Также: Иерархические данные.

Рекурсия, пример D.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы