Строим дерево.

dmdx
Дата: 16.01.2009 11:03:53
Всем привет.
БД: MSSQL 2005 SP3 Express edition
покурил форум нашел что то приближенное к моему вопросу тут.
Вопрос в следующем. Есть таблица dictionaries, где содержаться все справочники, надо вывести данные в виде дерева. В оракле есть такая функция как start with и connect by
select rn,parent,name from dictionaries
start with parent = -1
connect by parent = prior rn
Думал использовать
select rn,parent,name from dictionaries
order by parent,rn
Выводит впринцепе допустимо, но выводит все. А у меня в таблице несколько деревьев и в данный момент надо вывести конкретное и одно.
Да и еще я посмотрел в том примере используется level это для mssql критично? в oracle некритично.
Гавриленко Сергей Алексеевич
Дата: 16.01.2009 11:05:17
В мсскл нет ни connect by, ни level.
dmdx
Дата: 16.01.2009 11:07:06
Гавриленко Сергей Алексеевич
В мсскл нет ни connect by, ни level.


level я имел ввиду поле в таблице. Если оно там критично и запрос будет строится столько раз какой level то это уже усложняет ситуацию. я ведь не могу предположить сколько уровней у дерева будет.
Glory
Дата: 16.01.2009 11:07:32
dmdx

Думал использовать
select rn,parent,name from dictionaries
order by parent,rn
Выводит впринцепе допустимо, но выводит все. А у меня в таблице несколько деревьев и в данный момент надо вывести конкретное и одно.
Да и еще я посмотрел в том примере используется level это для mssql критично? в oracle некритично.

1. Надо использовать CTE запрос. С where
2. level был в таблице из ссылке по начальной постановке автора. И только
Паганель
Дата: 16.01.2009 11:08:22
Официальная дока: Рекурсивные запросы, использующие обобщенные табличные выражения
(Там с примерами даже)

От себя: connect by я так до конца и не понял, а cte от ms как-то сразу зашло
одно из двух - либо connect by придумали марсиане, либо это я такой
dmdx
Дата: 16.01.2009 11:13:41
Гавриленко Сергей Алексеевич
В мсскл нет ни connect by, ни level.

Я понял что нет вот я и интересуюсь у вас спецов есть ли альтернатива. т.к. заказчик требует перевести базу с oracle на mssql.
Гавриленко Сергей Алексеевич
Дата: 16.01.2009 11:17:00
dmdx
Гавриленко Сергей Алексеевич
В мсскл нет ни connect by, ни level.

Я понял что нет вот я и интересуюсь у вас спецов есть ли альтернатива. т.к. заказчик требует перевести базу с oracle на mssql.
Как уже сказали, CTE.
dmdx
Дата: 16.01.2009 11:19:31
Паганель

От себя: connect by я так до конца и не понял

Я тоже не сразу понял, но когда разобрался оказалась очень удобная вещь. позволяет выбирать из таблицы данные ввиде дерева. причем сразу строит из попорядку как дерево.
dmdx
Дата: 16.01.2009 11:20:38
Паганель,

спасибо за ссылку. Думаю это то что надо.