Запрос без рекурсивной таблицы зависимостей - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь выбрать реестр базы данных, который не имеет зависимостей (посмотрите на рисунок и результат).

TABLE

RESULT

RESULTADO

Я попытался с помощью следующей функции:

create or replace function consultar(id integer)
RETURNS TABLE(cod character varying, nom character varying) as
$$
declare
ids character varying[];
begin
ids:=(select array(select distinct tb_plan_p from 
tb_plan where 
tb_plan_p is not null order by tb_plane_p));

RETURN QUERY
select tb_plan_cod, tb_plan_des
from tb_plan
where tb_plan_cod <> any(ids) order by tb_plane_cod;
end;
$$ LANGUAGE plpgsql;

Сначала я попытался создать массив, содержащий код с зависимостями, а затем удалить этот код из результата. Но у меня естьне получил то, что хочу

1 Ответ

0 голосов
/ 05 декабря 2018

Я не совсем уверен, что правильно понял требование, но мне кажется, что вы ищете этот запрос:

SELECT cod, name
FROM tb_plan AS p1
WHERE fk IS NOT NULL
  AND NOT EXISTS (
         SELECT 1
         FROM tb_plan AS p2
         WHERE p2.fk = p1.cod
      );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...