@antonidas37

Как написать рекурсивную функцию на PostgreSQL?

Как написать рекурсивную функцию?
На вход функции подается id фильма и результатом выводятся все приквелы для фильма.
spoiler
5e256ecccafe9155384671.png

Вот моя версия функции, только она выводит все фильмы.
spoiler
create or replace function get_all_prequils(filmid int)
returns table (id int, filmname varchar, prequelid int) as $$
	with recursive rec as (
	select f.FilmID, f.FilmName, f.PrequelID
	from Film as f
	where f.FilmID = filmid
    
	union
	
	select r.FilmID, r.FilmName, r.PrequelID
    from rec as r
	join Film f on f.PrequelID = r.FilmID
)
select *
from rec
$$ language sql;

select get_all_prequils(1);

spoiler
5e256faa7df3c061224175.png
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ответы на вопрос 2
irishmann
@irishmann
Научись пользоваться дебаггером
@QuickJoey
Вот тут vvs.ru/pg человек регулярно собирает pgAdmin 3 для новых версий. На текущий момент, всё работает без ошибок с версией PostgreSQL 12.1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы