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

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

http://www.codenet.ru/db/other/trees/
...
Рейтинг: 0 / 0
16.08.2005, 23:41
    #33219357
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
На SQL-е (стандартном) это не пишется. Предпринимай доп. ухищрения типа хранения результата транзитивного замыкания дерева в доп. таблице или вон еще есть т.н. модель вложенных множеств (надо найти статью Joe Celco продеревья.)
...
Рейтинг: 0 / 0
17.08.2005, 09:47
    #33219603
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
Структуру таблицы приведите?
Если стандартная parent-child, то хранимая поцедура выбирающая по уровням во временную таблицу.
...
Рейтинг: 0 / 0
17.08.2005, 11:24
    #33219945
ignaci
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
Структура стандартная parent-child. Приведите пожалуйста пример этой злощастной проце-дуры которая использует временную таблицу на TSQL (ASE)?
Попытаюсь в ней разобраться, поскольку я не очень силен в написаниии подобных штук. Пожалуйста!!!
...
Рейтинг: 0 / 0
17.08.2005, 14:05
    #33220606
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
Где-то так. Возможны варианты.
Код: 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
18.08.2005, 12:19
    #33222746
ignaci
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
Спасибо 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
18.08.2005, 12:23
    #33222759
ignaci
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
А нельзя ли обойтись без использования темповых таблиц для решения этой задачи?
...
Рейтинг: 0 / 0
19.08.2005, 12:27
    #33224992
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
Можно, если использовать постоянную таблицу вместо временной.
...
Рейтинг: 0 / 0
19.08.2005, 12:32
    #33225012
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов указанного родителя для ASE (TSQL)
Раз

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


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