私はこれらのテーブルSQLクエリ
destination (id integer, name text)
activity (id integer, name text, destination_id integer)
activity_duration (value numeric, unit text, label text, activity_id integer)
activity_duration_price(amount numeric, currency_id integer, activity_duration_id integer)
を持つ各宛先は、1つの以上の活性を持って、各アクティビティは、1つのまたはそれ以上の期間を有し、各期間は、1つの価格を持っています。
は、ここに私のクエリ
select
d.id destination_id,
d.name destination_name,
count(a.id) as nb_activity,
string_agg('{"id":'||a.id||',"name":"'||a.name||'","pictures":"'||a.pictures||'","meta":{"price":'||amount||',"label":"'||label||'"}}',',') activities
from destination d
left join activity a on (a.destination_id = d.id)
left join activity_duration ad on (activity_id = a.id)
left join activity_duration_price adp on (adp.activity_duration_id = ad.id)
where d.id = any (array[142]) group by d.id, d.name order by nb_activity desc
であり、これはあなたが見ることができるように、メタ情報は、同じ項目のために二回ありstring_agg
[{
"id": 2,
"name": "visit tokyo",
"meta": {
"price": 210,
"label": "Adult"
}
}, {
"id": 2,
"name": "visit tokyo",
"pictures": "{}",
"meta": {
"price": 170,
"label": "Children"
}
}]
ための結果です。
私はstring_aggのための私の結果は、私がこのような結果を得ることができますどのようにこの
[{
"id": 2,
"name": "visit tokyo",
"meta": [{
"price": 210,
"label": "Adult"
},
{
"price": 170,
"label": "Children"
}
]
}]
のようになりたいですか?
テーブルには記載されていない「amount」や「label」のようなフィールドがあります。 – Dmitry
ありがとう!私は私のポストを編集 – Rony