Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вывод всех дочерних отделов из таблицы отделов  [new]
olga802005
Member

Откуда:
Сообщений: 50
Есть таблица Отделов Otdeli(ID, CODE, NAME, PARENT_ID). Мне нужен запрос, который получит список дочерних отделов всех уровней для отдела с кодом 12345.

Select NAME From DEPARTMENT Where CODE=’12345’


Сомневаюсь что здесь так просто… Может я не так поняла?
9 окт 16, 11:26    [19760306]     Ответить | Цитировать Сообщить модератору
 Re: Вывод всех дочерних отделов из таблицы отделов  [new]
olga802005
Member

Откуда:
Сообщений: 50
Select NAME From Otdeli Where CODE=’12345’
9 окт 16, 11:34    [19760315]     Ответить | Цитировать Сообщить модератору
 Re: Вывод всех дочерних отделов из таблицы отделов  [new]
iljy
Member

Откуда:
Сообщений: 8711
olga802005,

насколько я понял, "все уровни" реализуются с помощью PARENT_ID? Тогда ван нужен рекурсивный CTE, в статье на MSDN есть даже примеры обхода дерева.
9 окт 16, 12:34    [19760386]     Ответить | Цитировать Сообщить модератору
 Re: Вывод всех дочерних отделов из таблицы отделов  [new]
olga802005
Member

Откуда:
Сообщений: 50
iljy
olga802005,

насколько я понял, "все уровни" реализуются с помощью PARENT_ID? Тогда ван нужен рекурсивный CTE, в статье на MSDN есть даже примеры обхода дерева.


https://msdn.microsoft.com/ru-ru/library/ms175972(v=sql.120).aspx

это?
9 окт 16, 14:19    [19760558]     Ответить | Цитировать Сообщить модератору
 Re: Вывод всех дочерних отделов из таблицы отделов  [new]
olga802005
Member

Откуда:
Сообщений: 50
так сработает?

WITH EntityChildren AS
(
SELECT * FROM Otdeli WHERE ID = 12345
UNION ALL
SELECT e.* FROM Otdeli e INNER JOIN EntityChildren e2 on e.`PARENT_ID` = e2.`ID`
)
SELECT * FROM EntityChildren
9 окт 16, 14:23    [19760572]     Ответить | Цитировать Сообщить модератору
 Re: Вывод всех дочерних отделов из таблицы отделов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
olga802005
так сработает?

WITH EntityChildren AS
(
SELECT * FROM Otdeli WHERE ID = 12345
UNION ALL
SELECT e.* FROM Otdeli e INNER JOIN EntityChildren e2 on e.`PARENT_ID` = e2.`ID`
)
SELECT * FROM EntityChildren
Нажмите F5 и узнаете.
9 окт 16, 14:29    [19760585]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить