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

start [/forum/topic.php?desktop=1&fid=46&tid=1822103]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
22ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 299ms |

| 0 / 0 |
