
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
28.06.2002, 13:42:32
|
|||
|---|---|---|---|
|
|||
Как сконструировать запрос? |
|||
|
#18+
Уважаемые мастера. Помогите. У меня есть таблица, отражающая древовидную структуру вида - ID, ID_Parent и другие поля. Я написал хранимую процедуру, в которую передаётся идентификатор записи - @ID, а она на выходе выдаёт все её дочерние записи, т.е. у которых ID_Parent = @ID. И ещё, для каждой из возвращённых записей добавляется логическое поле - hasChilds, указывающее есть ли у этой дочерней записи свои дочерние. Я написал её используя серверный курсор. Но вычитал, что их использовать крайне не рекомендуется, так как в два раза уменьшают быстродействие. И на самом деле - роботает крайне медленно. Если кто знает - спасите !!! Можно ли это же самое сделать с использованием T-SQL запроса? Заранее благодарен, Александр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.06.2002, 13:46:15
|
|||
|---|---|---|---|
Как сконструировать запрос? |
|||
|
#18+
Дерево - ID, PARENTID, NAME ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.06.2002, 14:28:26
|
|||
|---|---|---|---|
Как сконструировать запрос? |
|||
|
#18+
Это делается с помощью цикла и временной таблицы строчек в 15. Попробуйте сами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.06.2002, 14:36:36
|
|||
|---|---|---|---|
|
|||
Как сконструировать запрос? |
|||
|
#18+
Спасибо за ссылку. Но это всё общие слова. Я просто спросил - можно ли выполнить запрос (помимо выбора всех дочерних ещё указать есть ли у выбранных свои дочерние) без использования курсора и если можно, то как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.06.2002, 15:10:02
|
|||
|---|---|---|---|
Как сконструировать запрос? |
|||
|
#18+
Вот такой запрос я использую для подгрузки в 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 Все, удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1822103]: |
0ms |
get settings: |
7ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 366ms |

| 0 / 0 |
