Is there a way to fix this ugliness

From: Tim Uckun <timuckun(at)gmail(dot)com>
To: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Is there a way to fix this ugliness
Date: 2016-09-09 13:30:37
Message-ID: CAGuHJrP6aq5baeh_cB7QAP6y1z8ceHkDY2VkF9QP-Y+QhxsdOg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

I am trying to get the child elements of a one to many table to be rolled
up into a json field in the parent table. The query I am running is

select
ob.id
,case when array_position(array_agg(im.image_type), null) = 1 then
'[]' else json_agg(row_to_json(im.*)) end as images
from observations ob
left join images im on ob.id = im.observation_id
group by 1

The reason I have the case statement there is because some observations
don't have images but the json_agg(row_to_json function returns [NULL]
instead of [] which is what I really want.

Is there a more elegant way to do this?

I searched on the internet and somebody suggested coalesce but no matter
what combination I tried I could not make it happen.

Thanks.

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Merlin Moncure 2016-09-09 13:50:00 Re: Is there a way to fix this ugliness
Previous Message hubert depesz lubaczewski 2016-09-09 12:05:04 Very slow queries to stats on 9.3