powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как результат подзапроса сделать массивом?
7 сообщений из 7, страница 1 из 1
как результат подзапроса сделать массивом?
    #39667392
DennniLA2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две таблицы: events (eventId, name, ...), costs (costId, eventId, costName, ...). Отношение: один ко многим.
Нужно получить такой результат в виде массива объектов:
Код: javascript
1.
2.
3.
  [
    { eventId, name, costs: [{ costId, costName }]}
  ]


Подскажите, пожалуйста, как это сделать в одном запросе?
...
Рейтинг: 0 / 0
как результат подзапроса сделать массивом?
    #39667423
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DennniLA2Есть две таблицы: events (eventId, name, ...), costs (costId, eventId, costName, ...). Отношение: один ко многим.
Нужно получить такой результат в виде массива объектов:
Код: javascript
1.
2.
3.
  [
    { eventId, name, costs: [{ costId, costName }]}
  ]


Подскажите, пожалуйста, как это сделать в одном запросе?

select eventId, name, array_agg(ROW(costId, costName)) from events left join costs using (eventId) group by eventId, name;

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
как результат подзапроса сделать массивом?
    #39667504
DennniLA2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk, спасибо!
Но на выходе я получаю вместо массива строку:
"{"($10.00,silver,2018-06-28,)","($0.00,gold,,)","($100.00,platinum,,)"}"
Я конечно могу написать парсер, но, возможно, уже есть средство, позволяющее делать это автоматически? Подскажите, пожалуйста!
...
Рейтинг: 0 / 0
как результат подзапроса сделать массивом?
    #39667514
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DennniLA2Maxim Boguk, спасибо!
Но на выходе я получаю вместо массива строку:
"{"($10.00,silver,2018-06-28,)","($0.00,gold,,)","($100.00,platinum,,)"}"
Я конечно могу написать парсер, но, возможно, уже есть средство, позволяющее делать это автоматически? Подскажите, пожалуйста!

Так это уже вопрос к вашему языку программирования а не к базе.
Тут я ничем помочь не могу что он не хочет автоматически массивы разбирать которые база вернула.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
как результат подзапроса сделать массивом?
    #39667522
DennniLA2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim BogukТак это уже вопрос к вашему языку программирования а не к базе.
Тут я ничем помочь не могу что он не хочет автоматически массивы разбирать которые база вернула.

Спасибо, Максим! )
...
Рейтинг: 0 / 0
как результат подзапроса сделать массивом?
    #39667551
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DennniLA2,

судя по формату вы хотели что-то вроде json?
Код: sql
1.
select eventId, name, json_agg(json_build_object('costId', costId, 'costName', costName)) from events left join costs using (eventId) group by eventId, name;


pg 9.4 или новее
...
Рейтинг: 0 / 0
как результат подзапроса сделать массивом?
    #39667557
DennniLA2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MelkijDennniLA2,

судя по формату вы хотели что-то вроде json?
Код: sql
1.
select eventId, name, json_agg(json_build_object('costId', costId, 'costName', costName)) from events left join costs using (eventId) group by eventId, name;


pg 9.4 или новее
Большое спасибо! Это именно то, что было нужно!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как результат подзапроса сделать массивом?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]