У меня есть представление, и у меня есть функция, которая возвращает записи из этого представления.
Вот определение вида:
CREATE VIEW ctags(id, name, descr, freq) AS
SELECT tags.conc_id, expressions.name, concepts.descr, tags.freq
FROM tags, concepts, expressions
WHERE concepts.id = tags.conc_id
AND expressions.id = concepts.expr_id;
Столбец id ссылается на таблицу теги , что указывает на другую таблицу понятия , которая, в свою очередь, ссылается на таблицу выражения .
Вот определения таблицы:
CREATE TABLE expressions(
id serial PRIMARY KEY,
name text,
is_dropped bool DEFAULT FALSE,
rank float(53) DEFAULT 0,
state text DEFAULT 'never edited',
UNIQUE(name)
);
CREATE TABLE concepts(
id serial PRIMARY KEY,
expr_id int NOT NULL,
descr text NOT NULL,
source_id int,
equiv_p_id int,
equiv_r_id int,
equiv_len int,
weight int,
is_dropped bool DEFAULT FALSE,
FOREIGN KEY(expr_id) REFERENCES expressions,
FOREIGN KEY(source_id),
FOREIGN KEY(equiv_p_id) REFERENCES concepts,
FOREIGN KEY(equiv_r_id) REFERENCES concepts,
UNIQUE(id,equiv_p_id),
UNIQUE(id,equiv_r_id)
);
CREATE TABLE tags(
conc_id int NOT NULL,
freq int NOT NULL default 0,
UNIQUE(conc_id, freq)
);
Таблица выражений также ссылается на мой взгляд (ctags).
Я хочу, чтобы моя функция объединила строки моего представления, которые имеют равные значения в столбце name и которые ссылаются на строки таблицы concepts с равными значениями столбца экв_r_id , так что эти строки объединяются только один раз, объединенная строка имеет один (неважно, какой) из идентификаторов, значение столбца descr объединяется из значений объединяемых строк и строка freq содержит сумму значений из строк, которые объединяются. Я понятия не имею, как это сделать, любая помощь будет оценена.