Re: ***SPAM*** Re: With Recursive / Recursive View question
Вложения
В списке pgsql-general по дате отправления:
| От | Perry Smith |
|---|---|
| Тема | Re: ***SPAM*** Re: With Recursive / Recursive View question |
| Дата | |
| Msg-id | 8B83D9FF-E0B0-4CC0-8159-70BE56524D93@easesoftware.com обсуждение исходный текст |
| Ответ на | Re: With Recursive / Recursive View question (Christophe Pettus <xof@thebuild.com>) |
| Список | pgsql-general |
On Aug 20, 2022, at 19:38, Christophe Pettus <xof@thebuild.com> wrote:On Aug 20, 2022, at 15:42, Perry Smith <pedz@easesoftware.com> wrote:
To rephrase, is it possible to write a view that would work from the child terms out towards the ancestors?
Assuming that the concern is that you want to parameterize this predicate:
WHERE basename = '10732.emlx'
... you might consider an SQL function taking basename as a parameter.
CREATE OR REPLACE FUNCTION pathname(in_id bigint)RETURNS character varying AS$$DECLAREfullpath character varying;BEGINWITH RECURSIVE pathname(id, parent_id, basename) AS (SELECT child.id, child.parent_id, child.basenameFROM dirents childWHERE child.id = in_idUNION ALLSELECT parent.id, parent.parent_id, CONCAT(parent.basename, '/', child.basename)FROM dirents parent, pathname childWHERE parent.id = child.parent_id)SELECT basename INTO fullpath FROM pathname where parent_id IS NULL;RETURN fullpath;END;$$ LANGUAGE plpgsql;SELECT pathname(id) FROM dirents WHERE basename = 'OSX';
В списке pgsql-general по дате отправления:
Сайт использует файлы cookie для корректной работы и повышения удобства. Нажимая кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь на их использование в соответствии с Политикой в отношении обработки cookie ООО «ППГ», в том числе на передачу данных из файлов cookie сторонним статистическим и рекламным службам. Вы можете управлять настройками cookie через параметры вашего браузера