Я хочу SELECT
сущностей и столбец массива JSON uploads
, содержащий все их загрузки, а также поля cover
и profile
для каждой загрузки.
Пока что я могу получить массив загрузок, но я не могу добавить два других поля из таблицы entitiesXuploads
.
Базовое представление моих трех таблиц таково:
Entities
Uploads
- id (uuid)
- title (varchar)
- версии (jsonb)
entitiesXuploads
- entityId (int8)
- uploadId (uuid)
- обложка (bool)
- профиль (bool)
Мой запрос:
SELECT
e.id,
e.name,
COALESCE(jsonb_agg(up) FILTER (WHERE up."id" IS NOT NULL), '[]') as uploads
FROM
entities as e
LEFT JOIN "entitiesXuploads" as exu ON exu."entityId" = e."id"
LEFT JOIN "uploads" as up ON up."id" = exu."uploadId"
GROUP BY
e.id,
e.name
Возвращает строки с:
- id (id объекта)
- имя (название сущности)
- загрузок (массив загрузок json)