запрос
SELECT name, description, date
FROM table1
JOIN table 2 ON ...
JOIN table 3 ON ...
эту таблицу я потом группирую по, например, name
SELECT name, json_agg(t1)
FROM (
SELECT name, description, date
FROM table1
JOIN table 2 ON ...
JOIN table 3 ON ...
) AS t1
GROUP BY name
и у меня получается, что в поле с json это поле дублируется (я понимаю, почему)
как исключить оттуда это поле? убрать его из внутренней выборки я не могу, т.к. по нему идет группировка
Может так ? SELECT name, json_agg(t1) FROM ( SELECT description, date FROM table1 JOIN table 2 ON ... JOIN table 3 ON ... ) AS t1 GROUP BY name
тогда group by не сработает
ERROR: столбец "name" не существует
name и всё остальное из разных таблиц ?
ну, там join идет, часть данных из разных таблиц, да но смысл в том, что group by тут работает с том таблицей, которую сформировал внутренний селект
Используй json_build_object https://sqlize.online/sql/psql15/3831762df0c7f6c5d4e85302c45b427a/
ладно, видимо придется вот так делать спасибо
просто плохо, что ключ для json берется не из названия колонки, а из текста
Тогда проще так сделать https://sqlize.online/sql/psql15/67646906fe4c7fdc71580904f4e3a048/
пробую скопировать у тебя, пишет синтаксическую ошибку: json_agg(t1) #- '{0, id}' ERROR: оператор не существует: json #- unknown LINE 2: json_agg(t1) #- '{0, id}'
А попробуй jsonb_agg вместо json_agg Какая версия PG вообще?
о, а вот с jsonb сработало, спасибо!
Вот так, например: https://dbfiddle.uk/yus2nEq6
вот, это идеальный вариант я долго его не мог понять, но когда понял - супер спасибо!
Обсуждают сегодня