Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / top parent в celko дереве / 3 сообщений из 3, страница 1 из 1
05.06.2008, 15:25
    #35356991
tadmin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
top parent в celko дереве
Впервые столкнулся с деревом такого вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create table objects (
object_id int,
left         int,
right        int,
level        int,
primary key (object_id)
);
Мне нужно извлечь из него данные виде ObjectID, ParentObjectID, TopParentObjectID

Почитал, что тут пишут, извлечение ObjectID, ParentObjectID сделал так:
Код: plaintext
1.
2.
3.
SELECT p1.object_id as ObjectID, p2.object_id as PID, p1.name as Name,p2.name as ParentName, 
FROM objects as p1, objects as p2
where p1.left >p2.left and p1.left<p2.right  and (p1.level - p2.level)= 1  

Не могу понять, как можно получить TopParentObjectID для каждой строки?
...
Рейтинг: 0 / 0
05.06.2008, 15:34
    #35357030
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
top parent в celko дереве
заменить условие (p1.level - p2.level)=1 на p2.level=1
...
Рейтинг: 0 / 0
05.06.2008, 15:47
    #35357082
tadmin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
top parent в celko дереве
Спасибо.
итого выйдет так:
Код: plaintext
1.
2.
3.
4.
SELECT p1.object_id as ObjectID, p2.object_id as PID, p3.object_id as TopPID, p1.name as Name,p2.name as ParentName, 
FROM objects as p1, objects as p2, objects as p3
where p1.left >p2.left and p1.left<p2.right  and (p1.level - p2.level)= 1  
and p2.left >p3.left and p2.left<p3.right  and p3.level= 1  
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / top parent в celko дереве / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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