powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как сконструировать запрос?
6 сообщений из 6, страница 1 из 1
Как сконструировать запрос?
    #32034274
Alex Mey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые мастера.

Помогите.
У меня есть таблица, отражающая древовидную структуру вида -

ID, ID_Parent и другие поля.

Я написал хранимую процедуру, в которую передаётся идентификатор записи - @ID, а она на выходе выдаёт все её дочерние записи, т.е. у которых ID_Parent = @ID. И ещё, для каждой из возвращённых записей добавляется логическое поле - hasChilds, указывающее есть ли у этой дочерней записи свои дочерние.

Я написал её используя серверный курсор. Но вычитал, что их использовать крайне не рекомендуется, так как в два раза уменьшают быстродействие. И на самом деле - роботает крайне медленно.

Если кто знает - спасите !!! Можно ли это же самое сделать с использованием T-SQL запроса?

Заранее благодарен, Александр.
...
Рейтинг: 0 / 0
Как сконструировать запрос?
    #32034276
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дерево - ID, PARENTID, NAME
...
Рейтинг: 0 / 0
Как сконструировать запрос?
    #32034283
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это делается с помощью цикла и временной таблицы строчек в 15.
Попробуйте сами
...
Рейтинг: 0 / 0
Как сконструировать запрос?
    #32034285
Alex Mey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ссылку.
Но это всё общие слова.
Я просто спросил - можно ли выполнить запрос (помимо выбора всех дочерних ещё указать есть ли у выбранных свои дочерние) без использования курсора и если можно, то как?
...
Рейтинг: 0 / 0
Как сконструировать запрос?
    #32034296
Dominic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такой запрос я использую для подгрузки в TreeView дочерних узлов к раскрываемому пользователем:

SELECT N.classid_child, OP.nodeid, OP.objectid, OP.objectname, OP.number,
COUNT(OC.objectid) As count_child
FROM nodes N INNER JOIN (objects3 OP LEFT JOIN objects3 OC
ON OC.objectid_parent = OP.objectid)
ON N.nodeid = OP.nodeid
WHERE OP.objectid_parent = @id
GROUP BY N.classid_child, OP.nodeid, OP.objectname, OP.objectid, OP.number
ORDER BY OP.number

Объяснять особо некогда, бегу домой. Галопом:

nodes - таблица описаний иерархии классов объектов, расположенных на рассматриваемом узле
objects3 - дерево объектов со структурой objectid, objectid_parent
псевдонимы тадлиц OP и OC - родители и дочки соответственно

Возвращает все дочерние узлы по отношению к рассматриваемому в @id, а также число дочерних к дочерним - COUNT(*). Если ненулевое число - то в TreeView создается мнимый узел (+), сигнализирующий пользователю, что там что-то есть. Он раскрывает, событие Expand, и все по-новой. Для твоей задачи может быть расширен дополнительным LEFT или INNER JOIN

Все, удачи
...
Рейтинг: 0 / 0
Как сконструировать запрос?
    #32034406
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to: snake
Спасибо!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как сконструировать запрос?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]