PostgreSQL: как найти последнего потомка в линейной связи предок-потомок

У меня есть следующая структура БД:

RELATIONSHIP_TABLE
- id << primary key
- id_ancestor << foreign key to the same table
- id_entry << foreign key to "ENTRY_TABLE"

ENTRY_TABLE
- id
- name
...

Иерархия в таблице "RELATIONSHIP_TABLE" является линейной. Это означает, что запись может быть не более чем предком другой записи. Примеры:

1. record1
2. record2 <- record3 <- record4
3. record5 <- record7 <- record9 <- record12

Каждая запись в определенной иерархии имеет один и тот же «id_entry». Теперь я хотел бы найти последнего потомка с определенным «id_entry». Результатом приведенных ниже примеров будет:

1. record1
2. record4
3. record12

Кто-нибудь знает решение?

Заранее спасибо :)

QStormDS


person QStormDS    schedule 28.05.2013    source источник


Ответы (1)


person    schedule
comment
Привет еще раз, этот запрос работает хорошо. Однако у меня есть дополнительное требование, и я не знаю, как решить это с помощью этого запроса. Требование: последний потомок, у которого флаг (столбец таблицы отношений) установлен в значение true. Пример: запись5(флаг = ложь) ‹- запись7(флаг = истина) ‹- запись9(флаг = ложь) ‹- запись12(флаг = ложь) результат должна быть запись7 - person QStormDS; 19.06.2013
comment
Я не понимаю. Я предлагаю вам начать новый вопрос со всеми старыми и новыми требованиями. - person joop; 20.06.2013