У меня есть следующие таблицы в базе данных,
Заказы:
|order_id |
----+---------+
1 | 123-456 |
2 | 123-455 |
3 | 123-454 |
Элементы заказа:
|order_id |description|
----+---------+------------
1 | 123-456 | ABC
2 | 123-456 | DEF
3 | 123-456 | GHI
4 | 123-455 | ABC
5 | 123-454 | DEF
6 | 123-453 | GHI
Я хочу сделать следующее:
SELECT o.*, array_to_json(array_agg(i.*)) as items
FROM orders o
LEFT OUTER JOIN order_items i
ON i.order_id = o.order_id
group by o.order_id
Мне нужно иметь возможность выбирать заказы с элементами, которые содержат определенное описание, но также сохранять все остальные элементы в заказе.
Так что, если я сделал следующее;
SELECT o.*, array_to_json(array_agg(i.*)) as items
FROM orders o
LEFT OUTER JOIN order_items i
ON i.order_id = o.order_id
WHERE i.description LIKE '%ABC%'
group by o.order_id
Мне нужен результат:
|order_id |items|
----+---------+------------
1 | 123-456 | [{"order_id":"123-456","description":"ABC"},{"order_id":"123-456","description":"DEF"},{"order_id":"123-456","description":"GHI"}]
2 | 123-455 | [{"order_id":"123-455","description":"ABC"}]
Спасибо.