2015-10-09 6 views
0

Я хотел бы получить количество всех продуктов под определенным идентификатором.postgresql возвращает количество объектов jsonb

Я пробовал:

SELECT 
    count(jsonb_object_keys(data #> '{products}')) as numProducts 
FROM 
    appointment_intakes 
WHERE 
    appointment_intakes.id = 'VGDKMjdxn' 

я получаю:

ERROR: set-valued function called in context that cannot accept a set 

Когда я запускаю выше без функции count, я получаю список ключей.

Любая идея, что я делаю неправильно?

спасибо.

+0

Я не 100% на этом, но я не считаю, что это, как вы используете 'выберите count' в Postgres ... Обычно это было бы что-то вроде' SELECT COUNT (*) '.. – ryekayo

ответ

2

Функция set-value должна вызываться в предложении FROM. Использование бокового присоединения:

SELECT 
    count(keys) as numProducts 
FROM 
    appointment_intakes, 
    LATERAL jsonb_object_keys(data #> '{products}') keys 
WHERE 
    appointment_intakes.id = 'VGDKMjdxn' 
Смежные вопросы