powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
13 сообщений из 13, страница 1 из 1
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
    #33217305
ignaci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как насчет возврата дочерних обьектов указанного родителя в ASE (TSQL)?
Кто нибуть может помоч с этим вопросом?
...
Рейтинг: 0 / 0
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
    #33218499
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем проблема ?
Код: plaintext
select * from CHILDREN where parent = @parent
...
Рейтинг: 0 / 0
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
    #33218567
ignaci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема в там что надо выбрать подузлы всез подуровней указаного узла. Т.е. надо пособирать все подчиненные узлы на всех подуровнях и выдать их единым результатом. Это у меня не получаэтся. Помогите пожалуйста!
...
Рейтинг: 0 / 0
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
    #33218776
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Единой конструкцией WITH RECURSIVE, как на WatcomSQL в ASA9 на TSQL в ASE не сделаешь. Надо искать всех потомков в цикле, заносить их во временную таблицу на каждой итерации цикла. Написать это не сложно.
Кстати очень рекомендую, сразу заложить в скрипте проверку максимально допустимого уровня вложенности потомков, хотя бы на этапе разработки.

все наши на www.corba.kubsu.ru
...
Рейтинг: 0 / 0
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
    #33218904
Peter Kirillow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
могу посоветовать почитать:

http://www.codenet.ru/db/other/trees/
...
Рейтинг: 0 / 0
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
    #33219357
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На SQL-е (стандартном) это не пишется. Предпринимай доп. ухищрения типа хранения результата транзитивного замыкания дерева в доп. таблице или вон еще есть т.н. модель вложенных множеств (надо найти статью Joe Celco продеревья.)
...
Рейтинг: 0 / 0
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
    #33219603
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Структуру таблицы приведите?
Если стандартная parent-child, то хранимая поцедура выбирающая по уровням во временную таблицу.
...
Рейтинг: 0 / 0
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
    #33219945
ignaci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Структура стандартная parent-child. Приведите пожалуйста пример этой злощастной проце-дуры которая использует временную таблицу на TSQL (ASE)?
Попытаюсь в ней разобраться, поскольку я не очень силен в написаниии подобных штук. Пожалуйста!!!
...
Рейтинг: 0 / 0
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
    #33220606
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то так. Возможны варианты.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
create procedure p_NodesSelect
@parent_id int 
as
create table #t (id int) 
insert #t select id from Table where parent_id = @parent_id 
if @@rowcount= 0  
    select * from #t
    return 
endif   

while ( 1 = 1 ) 
begin
   insert #t 
   select id
   from Table t1 
     inner join  #t t2 on t1.parent_id=t2.id 
     left  join #t t3 on t1.id = t3.id
   where t3.id is null
 
   if @@rowcount= 0  
      select * from #t
      return 
   endif   
end
Код не проверял, так как ASE под рукой нет. Если что уточню.
...
Рейтинг: 0 / 0
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
    #33222746
ignaci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Crip за идею, у меня получилось. Но я немножко подправил твой скрипт так как он не работал. Вот мой вариант, но я туда уже вписал названия своих
таблиц и полей.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
CREATE PROCEDURE dbo.p_NodesSelect @parent_id int 
AS 

BEGIN 
    select ID_Rahunok into #t from Rahunok where ParentRahunok = @parent_id 
    if @@rowcount= 0  
    begin
        select * from Rahunok where ID_Rahunok in (select #t.ID_Rahunok from #t)
        return 
    end

    while ( 1 = 1 ) 
    begin
        insert #t 
        select t1.ID_Rahunok
        from Rahunok t1 
            inner join #t t2 on t1.ParentRahunok=t2.ID_Rahunok 
        where t1.ID_Rahunok not in (select #t.ID_Rahunok from #t)
         
        if @@rowcount= 0  
        begin
            select * from Rahunok where ID_Rahunok in (select #t.ID_Rahunok from #t)
            return 
        end
    end
END
...
Рейтинг: 0 / 0
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
    #33222759
ignaci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А нельзя ли обойтись без использования темповых таблиц для решения этой задачи?
...
Рейтинг: 0 / 0
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
    #33224992
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно, если использовать постоянную таблицу вместо временной.
...
Рейтинг: 0 / 0
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
    #33225012
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз

Два
Читай.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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