Доброго времени суток. Прошу помощи в написании функции. Есть 2 таблицы:
tags:
id serial;
tag character varying;
groups:
id SERIAL;
title character varying;
tags character varying[]; -- Здесь храняться id из таблицы tags. Не знаю, имеет ли это значение, но для этого поля установлен индекс gin
Первоначально функция выглядела так:
CREATE OR REPLACE FUNCTION video_galery.groups_list(OUT o_id integer, OUT o_title character varying, OUT o_tags character varying[]) RETURNS SETOF record AS $BODY$ DECLARE r RECORD; sql CHARACTER VARYING; BEGIN sql = ' SELECT g.id, g.title, g.tags FROM video_galery.groups g '; FOR r IN EXECUTE sql LOOP o_id = r.id; o_title = r.title; o_tags = r.tags; RETURN next; end loop; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100 ROWS 1000; ALTER FUNCTION video_galery.groups_list() OWNER TO postgres;
Но её нужно переписать. Нужно чтобы в o_tags возвращались не id тегов, к которым относится данная запись, а сами теги.
Заранее спасибо за помощь.
Все намного проще:
Все намного проще:
PS сделано допущение что в таблице groups поле tags имеет тип integer[], а не character varying[], ибо хранить массив id'шников в виде массива строк крайне не разумно.