Re: passing multiple records to json_populate_recordset

From: Raphael Bauduin <rblists(at)gmail(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: passing multiple records to json_populate_recordset
Date: 2013-09-23 13:25:27
Message-ID: CAONrwUEzpcQv3oF_JQrwuR1U61j2uXpHC4ojT8ygXnp=Tai05g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Mon, Sep 23, 2013 at 11:31 AM, Raphael Bauduin <rblists(at)gmail(dot)com> wrote:

> Hi,
>
> I'm experimenting with the json data type and functions in 9.3.
> I'm storing json objects of this form in the event column:
> {type: 'event_type, products : [ {id:45, 'type': 3, 'gender':'F',..}, ...,
> {....} ] }
>
> I can issue this query, but notice the limit 1:
>
> select * from json_populate_recordset(null::product, (select
> event->'products' from events limit 1));
>
> The result is (edited for conciseness):
>
> type | gender | id
> ------+--------+-------
> 41 | F | 40003
> 41 | F | 60043
> 41 | F | 27363
> 41 | F | 27373
> 41 | F | 28563
>
> But all these products come from one event.
> Is there a way to return the products from several events?, eg with a
> limit 2 rather than limit 1?
>
>
Some more info, after searching further.

This query

select
json_populate_record(null::product,row_to_json(json_populate_recordset(null::product,event->'products')))
from (select * from events limit 2) as foo ;

returns what I want but not in the format I want (why?):
json_populate_record
--------------------------
(33,61,M,3,51,12,54893)
(20,61,M,3,1,15,59623)
(17,61,M,3,453,12,59283)
(30,61,M,3,51,19,55713)
(26,61,M,3,51,19,54963)

I manage to get the results as json:

select
row_to_json(json_populate_recordset(null::product,event->'products')) from
(select * from events limit 2) as foo ;

row_to_json
--------------------------------------------------------------------------------------------
{"price_advantage":33,"type":61,"gender":"M","status":3,"brand":51,"price":12,"id":54893}
{"price_advantage":20,"type":61,"gender":"M","status":3,"brand":1,"price":15,"id":59623}
{"price_advantage":17,"type":61,"gender":"M","status":3,"brand":453,"price":12,"id":59283}

but I don't manage to get the results as from a table like in the first
json_populate_recordset query I listed (with limit 1). Any suggestion?

Thanks

Raph

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Merlin Moncure 2013-09-23 13:33:56 Re: passing multiple records to json_populate_recordset
Previous Message Rémi Cura 2013-09-23 13:16:37 Re: Tree structure