Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
115 / 14 / 21
Регистрация: 07.12.2013
Сообщений: 58

Функция для миграции нескольких записей в json

13.02.2015, 17:17. Показов 1179. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть таблица public.tovari
В ней большой первичный ключ.

Создается таблица
SQL
1
2
3
4
5
public.NEW_tovari
user_id INTEGER NOT NULL,
tovar_id INTEGER NOT NULL,
postvshik_id INTEGER NOT NULL,
str text NOT NULL
Нужно данные из первой таблицы заинсертить во вторую.
Несколько записей для данного user_id, tovar_id, postavshik_id
превращаются в одну запись вот так:
было:
Code
1
2
3
4
5
user_id |  tovar_id  | attacker_user_id | tech_id | level
23                   1      45                 101       1
23                   1      45                 102       2
23                   1      45                 103       3
23                   1      45                 104       4
будет:
Code
1
2
user_id |  tovar_id  | attacker_user_id | str
23                     1         45                 [{'first':101, 'second':1}, {'first':102, 'second':2}, {'first':103, 'second':3}, {'first':104, 'second':4}]
подскажите как сделать пожалуйста! конечно я думал просто типо
SQL
1
2
SELECT user_id ,tovar_id ,attacker_user_id,tech_id || level   AS str
FROM tovari
но так он не убирает повтарение а мне типо надо если находим похожий ID в этой таблице то в str заносим то чего не хватает
спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.02.2015, 17:17
Ответы с готовыми решениями:

Процедура для возврата нескольких записей
Написал вот такой запрос: SELECT b.key_Box as , goo.name as , p.name AS , c.country as , s. as from Box_key as b, store as s,...

Java, JSON и JSON Simple. Непонятка с созданием объекта JSON на сервере для отправки на фронт
Здравствуйте. Разрабатываю интернет-магазин на Java. Мне нужно на фронте получить список товаров из базы данных для отображения на...

Форма для одновременного добавления нескольких записей в таблицу
Здравствуйте! Есть таблица для учета ежедневной выручки по сотрудникам со следующими полями: дата, сотрудник, выручка. Не могу понять, как...

4
1264 / 978 / 384
Регистрация: 02.09.2012
Сообщений: 3,024
15.02.2015, 08:29
Попробуйте для вашей задачи комбинацию функций array_agg и array_to_json.
0
115 / 14 / 21
Регистрация: 07.12.2013
Сообщений: 58
16.02.2015, 15:39  [ТС]
а не подскажите\покажите как можно это реализовать? хотябы примерчик спасибо
0
1264 / 978 / 384
Регистрация: 02.09.2012
Сообщений: 3,024
16.02.2015, 17:20
Сложно мне проверить результат, но вот так должен получиться тип данных json[] (массив json'ов)

SQL
1
2
3
4
5
6
7
SELECT
user_id, tovar_id, attacker_user_id,
array_agg(tech_level)
FROM
(SELECT user_id, tovar_id, attacker_user_id, to_json('first:'||tech_id||', second:'||level) AS tech_level FROM test) test1
GROUP BY
user_id, tovar_id, attacker_user_id;
1
115 / 14 / 21
Регистрация: 07.12.2013
Сообщений: 58
18.02.2015, 16:38  [ТС]
спасибо очень помогло, но правда формат вывода не тот который хотелось бы, не могли бы вы подсказать как исправить? а то что-то не получается у меня (
Oracle 11 SQL
1
"[{"FIRST":101,"LEVEL":1},{"FIRST":102,"LEVEL":2}]"
вот такой формат вывода нужен ( спасибо огромное!

Добавлено через 2 часа 8 минут
Oracle 11 SQL
1
2
3
4
5
6
7
SELECT
user_id, attacker_shard_id,attacker_user_id ,
array_to_json(array_agg((tech_id,LEVEL)))
FROM
(SELECT user_id,attacker_shard_id,attacker_user_id ,tech_id ,LEVEL FROM shard1.u_loc_city_tech_replica) AS test1
GROUP BY
user_id, attacker_shard_id,attacker_user_id
почти верный код но есть проблема, там невозможно заменить f1 и f2 на first и second

Добавлено через 2 минуты
Oracle 11 SQL
1
2
3
4
5
SELECT s1.user_id,s1.attacker_shard_id,s1.attacker_user_id ,array_to_json(array_agg(row_to_json(t)))
FROM
(SELECT tech_id AS FIRST,LEVEL AS SECOND FROM shard1.u_loc_city_tech_replica) t,shard1.u_loc_city_tech_replica AS s1
GROUP BY 
s1.user_id,s1.attacker_shard_id,s1.attacker_user_id
а вот вариант где все выводится как надо, но лишняя информация попадает в строки где ее недолжно быть
что делать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.02.2015, 16:38
Помогаю со студенческими работами здесь

Проверка нескольких записей, соответствующих одному условию. Вывод нессоттветствующих записей в MsgBox.
День добрый. Мои знания в программировании растут очень вяло, но по традиции я пытаюсь задавать вопросы в крайней необходимости :) ....

Функция для нескольких компонент
Хочу сделать, чтобы при наведении курсора мыши цвет менялся на один, а при отводе на другой. И применить это ко всем компонентам на форме. ...

Функция для нескольких ссылок
function hide_show() { //Получаем стиль блока с айди div (для изменения) var...

Функция для нескольких блоков
Помогите начинающим правильно написать, что то я вообще не пойму )) Есть код для одного div-а (меняет рандомно картинку, каждую сек.),...

Одна функция для нескольких контролов
Дело в том, что хочу использовать одну функцию для нескольких контролов GridView потому что она выполняет одни и теже действия в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru