Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Tree_CTE (data, id)
AS (SELECT NAME, ID_FATHER FROM Tree WHERE NAME = 'MOTORCYCLE' UNION ALL )
SELECT * FROM tree_CTE;
Что остановило рекурсивный процесс? Факт, что больше нет звеньев цепочки, когда достигается значение id "NULL", что в нашем примере означает случай достижения "ALL". Отметим, что по неясным причинам MS SQL Server 2005 не допускает ключевого слова RECURSIVE после слова WITH, которое вводит CTE. Еще одна важная вещь, связанная со структурированными в форме деревьев данными, - это визуализация данных в виде дерева..., что означает наличие отступов в иерархии при извлечении данных. Возможно ли это? Да, конечно. Это может быть сделано вычислением пути внутри рекурсии и уровня вложенности. Вот пример такого запроса: WITH tree_CTE (data, id, level, pathstr) AS (SELECT NAME, ID, 0, cast(' ' as varchar(MAX)) FROM Tree WHERE ID_FATHER IS NULL UNION ALL tree_CTE.level+4, tree_CTE.pathstr + ' ' +Tree.NAME FROM Tree JOIN tree_CTE ON tree_CTE.id = Tree. ID_FATHER ) SELECT SPACE(level) + data as data, id, level, pathstr
Мы использовали новый тип данных в SQL 2005, который называется VARCHAR (MAX), поскольку мы не знаем максимального количества символов, которое потребуется при конкатенации VARCHAR (16) в рекурсивном запросе, который может оказаться очень глубоким. Date: 2015-09-18; view: 350; Нарушение авторских прав |