У меня есть следующая настройка таблиц:
CREATE TABLE public.tags (
tag_id int4 NOT NULL,
creation_timestamp timestamp NULL,
"name" varchar(255) NULL,
CONSTRAINT tags_pkey PRIMARY KEY (tag_id)
);
-- public.tag_targets definition
-- Drop table
-- DROP TABLE public.tag_targets;
CREATE TABLE public.tag_targets (
id int4 NOT NULL,
creation_timestamp timestamp NULL,
target_id int8 NULL,
target_name varchar(255) NULL,
last_update_timestamp timestamp NULL,
tag_id int4 NULL,
CONSTRAINT tag_targets_pkey PRIMARY KEY (id),
CONSTRAINT fkcesi55mqvysjv63c1xf2j15oh FOREIGN KEY (tag_id) REFERENCES tags(tag_id)
);
Я пытаюсь выполнить следующий запрос:
SELECT *
FROM tag_targets tt, tags t
WHERE tt.tag_id = t.tag_id
AND (t."name" IN ('Keeper', 'Pk'))
GROUP by tt.target_id
Однако он хочет, чтобы PK как тегов, так и Tagtarget в группе:
ERROR: column "tt.id" must appear in the GROUP BY clause or be used in an aggregate function
Есть ли способ сгруппировать по столбцу target_id? Также не стесняйтесь давать какие-либо отзывы о дизайне таблицы, поскольку я выбрал общую таблицу сопоставления и таблицу независимых тегов.