Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Деревья - возврат дочерних обьектов ... (from FAQ) / 9 сообщений из 9, страница 1 из 1
18.12.2004, 15:56
    #32833432
Гость1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов ... (from FAQ)
Народ, помогите пожалуйста разобраться с кодом.
Создал процедуру как написано. Но немогу разобраться каким образом она выдает нужный результат.
Я создал три таблицы

___ PK___CHAR__ FK
t1 id_t1 name
t2 id_t2 name id_t1
t3 id_t3 name id_t2

но
Код: plaintext
1.
SELECT *
FROM sp_child_tree (NULL);
ничего не возвращет.
Как мне изменить код процедуры, что бы работала ???
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CREATE PROCEDURE "DBA"."sp_child_tree"(IN @tree_id integer)
/*
  @tree_id - начальный узел дерева; если null - возвращается все дерево
*/
BEGIN
  with recursive tmp(tree_id, caption, parent_id, level, full_name) 
  as (
    // Возвращаем родителей (записи верхнего уровня дерева)
    select tree_id, caption, parent_id,  0 , caption
    from tree   
    where (@tree_id is null and parent_id is null) or 
      (@tree_id is not null and tree_id = @tree_id)
    union all
    // Возвращаем дочерние по отношению к родительским записям
    select t.tree_id, t.caption, t.parent_id, tmp.Level +  1 , 
      tmp.full_name || '\' || t.caption
    from tree t
      inner join tmp on t.parent_id = tmp.tree_id
  )
  select tree_id, space(level *  5 ) || caption as caption, parent_id
  from tmp
  order by full_name;
END
...
Рейтинг: 0 / 0
18.12.2004, 22:28
    #32833543
iLLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов ... (from FAQ)
Гость1SELECT *
FROM sp_child_tree (NULL);
Что-то такого никогда не видел, вроде надо делать "call sp_child_tree(NULL)". Может дело в этом?
...
Рейтинг: 0 / 0
20.12.2004, 06:33
    #32834017
old_joy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов ... (from FAQ)
Глюк.
Столкнулся полгода назад при формировании html страниц процедура вызывала другую процедуру с параметром, которая собственно и формировала страничку. Если вызов процедуры делал через select, то на третьем проходе сервак зависал. Какая тогда версия стояла не помню. Сделай вызов через call - будет работать.
...
Рейтинг: 0 / 0
20.12.2004, 07:37
    #32834031
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов ... (from FAQ)
По этой ссылке в FAQ даже указана версия билда, где ошибка была исправлена:
http://www.sql.ru/faq/faq_topic.aspx?fid=203

P.S. Не забывайте указывать номер билда, будет легче понять, старая это ошибка или новая.
...
Рейтинг: 0 / 0
20.12.2004, 12:09
    #32834486
Гость1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов ... (from FAQ)
Уважаемые специалисты.
Билд 9.0.2.2451
Я только начинаю разбираться с ASA.
Я не могу понять, где мне модифицировать код в хранимой процедуре, что бы она работала с таблицами t1, t2 и и t3?

Если можна, какой-нибудь рабочий пример. Так намного легче разобраться.


Спасибо за терпение.
lotr@mail.ru
...
Рейтинг: 0 / 0
20.12.2004, 18:13
    #32835670
Гость1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов ... (from FAQ)
Спасибо. Нашел в документации.
...
Рейтинг: 0 / 0
20.12.2004, 18:22
    #32835703
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов ... (from FAQ)
А зачем для дерева аж 3 таблички ? В приведенном в FAQ примере используется только одна таблица "tree" с полями "tree_id" и "parent_id".
...
Рейтинг: 0 / 0
20.12.2004, 18:48
    #32835755
Гость1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов ... (from FAQ)
Эти таблицы связаны между собой втор. ключами.
Задача:

Получить для данной таблицы значения всех вторичные ключей связанных таблиц с данной (по PK), и если оные существуют, то и для них провернуть эту же операцию.

Хм. Вообще возможно ли это?
...
Рейтинг: 0 / 0
20.12.2004, 18:52
    #32835761
Гость1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деревья - возврат дочерних обьектов ... (from FAQ)
В программе следующее.
Есть цепочка документов. (они связаны между собой FK-PK)
нужно реализовать открытие связанных документов. Хотелось бы одним махом получить список нужных id, ну а далее дело техники.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Деревья - возврат дочерних обьектов ... (from FAQ) / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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