Таблица:Запросы к jsonb массива в Postgres
CREATE TABLE appointment
(
id bigserial NOT NULL,
date_of_visit timestamp without time zone NOT NULL,
symptoms text[],
diseases text[],
lab_tests text[],
prescription_id bigint NOT NULL,
medicines jsonb,
CONSTRAINT appointment_pkey PRIMARY KEY (id),
CONSTRAINT appointment_prescription_id_fkey FOREIGN KEY (prescription_id)
REFERENCES prescription (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
Вставить заявление:
INSERT INTO appointment values(
1,
now(),
'{"abc","def","ghi"}',
'{"abc","def","ghi"}',
'{"abc","def","ghi"}',
1,
'[{"sku_id": 1, "company": "Magnafone"}, {"sku_id": 2, "company": "Magnafone"}]')
Я пытаюсь запрос к столбцу типа jsonb массива в Postgres. У меня было какое-то решение, как показано ниже. Как-то не работает Ошибка: Cannot extract elements from a scalar
.
SELECT distinct(prescription_id)
FROM appointment
WHERE to_json(array(SELECT jsonb_array_elements(medicines) ->>'sku_id'))::jsonb ?|array['1']
LIMIT 2;
Update: Запрос работает нормально. Некоторое нежелательное значение в столбце было для некоторых других строк, из-за которых оно не было запущено.
Последний запрос работает нормально !! Когда я запускал первый, у меня было два нулевых поля. Запрос, который я поставил в вопросе, также работает отлично! Благодарю. –