powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как впихнуть невпихуемое?
8 сообщений из 8, страница 1 из 1
Как впихнуть невпихуемое?
    #39967799
user_t0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

Есть тестовая табличка:

WITH cte AS (
SELECT 1 AS id, 1 type_number, 10 type_count
UNION ALL
SELECT 1 AS id, 2 type_number, 20 type_count
UNION ALL
SELECT 2 AS id, 1 type_number, 15 type_count
UNION ALL
SELECT 2 AS id, 2 type_number, 25 type_count
)
SELECT * FROM cte


Вот такое на выходе:
Код: sql
1.
2.
3.
4.
5.
id,type_number,type_count
1;1;10
1;2;20
2;1;15
2;2;25




Подскажите пожалуйста, как можно в запрос вставить создание json чтобы результат был такой:

1;(1,10; 2,20)
2;(1,15; 2,25)

т.е.

id и json, который к нему относится.

надо group by id, а как сделать чтобы все что к этому id вставилось в json?
...
Рейтинг: 0 / 0
Как впихнуть невпихуемое?
    #39967803
user_t0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или в json невозможно вставить две строки таблицы?
Так чтобы (1,10; 2,20)
А не
(1,10)
(2,20)

получилось.
...
Рейтинг: 0 / 0
Как впихнуть невпихуемое?
    #39967807
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user_t0
Подскажите пожалуйста, как можно в запрос вставить создание json чтобы результат был такой:

Это не json. Ты имел ввиду
Код: sql
1.
2.
3.
4.
{
"1" : { "1" : 10, "2" : 20},
"2" : { "1" : 15, "2" : 25}
}


?
...
Рейтинг: 0 / 0
Как впихнуть невпихуемое?
    #39967815
user_t0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster
user_t0
Подскажите пожалуйста, как можно в запрос вставить создание json чтобы результат был такой:

Это не json. Ты имел ввиду
Код: sql
1.
2.
3.
4.
{
"1" : { "1" : 10, "2" : 20},
"2" : { "1" : 15, "2" : 25}
}


?


В том-то и дело что именно json надо (
...
Рейтинг: 0 / 0
Как впихнуть невпихуемое?
    #39967924
user_t0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster
user_t0
Подскажите пожалуйста, как можно в запрос вставить создание json чтобы результат был такой:

Это не json. Ты имел ввиду
Код: sql
1.
2.
3.
4.
{
"1" : { "1" : 10, "2" : 20},
"2" : { "1" : 15, "2" : 25}
}


?


Хотя так тоже пойдет, но это внутри json должно быть.
...
Рейтинг: 0 / 0
Как впихнуть невпихуемое?
    #39968100
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user_t0
Хотя так тоже пойдет

Это - самый настоящий json. А что там со скобками было я не знаю.
Сделай велик со string_agg и группировкой по id.
Не хочешь велик, посмотри в мануале постгресса json функции. Может придумаешь, как их них слепить себе такую структуру.
...
Рейтинг: 0 / 0
Как впихнуть невпихуемое?
    #39968102
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user_t0,
Велик:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
WITH cte AS (
SELECT 1 AS id, 1 type_number, 10 type_count
UNION ALL
SELECT 1 AS id, 2 type_number, 20 type_count
UNION ALL
SELECT 2 AS id, 1 type_number, 15 type_count
UNION ALL
SELECT 2 AS id, 2 type_number, 25 type_count
)
select concat('{', string_agg(v,','),'}') from (
   SELECT concat('"',id, '":', 
          concat('{',string_agg(concat('"',type_number,'" : ',type_count),','),'}')) v
   FROM cte group by id) x



https://dbfiddle.uk/?rdbms=postgres_12&fiddle=321419f06c9d8d56e31902c1bd5c49c1
...
Рейтинг: 0 / 0
Как впихнуть невпихуемое?
    #39969912
user_t0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster,

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


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