У меня есть две postgresql таблицы:
services
, в котором есть name
и description
, а также внешний ключ ofsted_item_id
ofsted_items
, в котором есть столбец inspection
, содержащий массив объектов JSONB
Столбец проверки JSONB содержит данные, которые выглядят следующим образом:
[
{"date": "2006-06-19", "judgement": "Satisfactory"},
{"date": "2009-01-22", "judgement": "Satisfactory"}
]
Я хотел бы получить имя и описание из таблицы служб, а также последнее решение.
До сих пор мне удалось разбить массивы JSON на красивые, аккуратные столбцы и соедините его со второй таблицей:
SELECT
ofsted_items.id,
name,
description,
this_inspection->>'judgement' AS judgement,
this_inspection->>'date' AS date
FROM ofsted_items
LEFT JOIN services
ON ofsted_items.id = services.ofsted_item_id,
LATERAL jsonb_array_elements(inspection) AS this_inspection
Это отлично работает.
Но, к сожалению, я не справляюсь с последним препятствием: я не могу найти разумный способ возвращает только самое последнее (ie. «Самое большое» значение в поле даты).
Пока что я пробовал:
UNIQUE
GROUP_BY and MAX()
, который, похоже, ничего не делает, возможно, потому что поле даты JSON?
Я также рассматривал подвыборки, но с этот подход я не делаю Я вижу, как я могу на самом деле показать красиво представленные суждения из столбца JSON.
Ради вопроса, давайте предположим, что я бессилен изменить структуру данных.