0 / 0 / 0
Регистрация: 12.12.2016
Сообщений: 15
|
|
1 | |
Insert многомерного массива24.04.2017, 22:03. Показов 2542. Ответов 6
Метки нет (Все метки)
Добрый вечер. Товарищи, подскажите, есть ли какая либо возможность инсерта в таблицу такого массива:
[ { idReq: 1, idUser: [ 173, 154, 163, 179 ] }, { idReq: 2, idUser: [ 191, 154 ] }, { idReq: 3, idUser: [] }, { idReq: 5, idUser: [] }, { idReq: 6, idUser: [] } ] Есть таблица связей. В ней колонка id, колонка idReq - int, и колонка idUser - int[]. По одной записи проблем с инсертом нет, через unnest массива юзеров, но как быть в этой ситуации? Цикл?
0
|
24.04.2017, 22:03 | |
Ответы с готовыми решениями:
6
Insert многомерного массива в базу MYSQL Как сделать Insert многомерного массива в бд Внутреннее устройство многомерного массива и неявное преобразование массива в указатель Cоздание многомерного массива - из 3х3 массива сделать 4х3 |
1254 / 970 / 382
Регистрация: 02.09.2012
Сообщений: 2,995
|
|
24.04.2017, 23:59 | 2 |
Приведите пример кода, где вы это используете. Непонятно, что конкретно вы хотите.
0
|
0 / 0 / 0
Регистрация: 12.12.2016
Сообщений: 15
|
||||||
25.04.2017, 09:15 [ТС] | 3 | |||||
Ну это будет не совсем пример кода.
Изначально я делал так. У меня есть 2 переменные: $1 = [ 173, 154, 163, 179 ] - массив id юзеров $2 = 1 - id записи, которой принадлежат юзеры Делаем инсерт
id| id_request| id_user -----+-------------+------------------------------ 1 | 1 |{173, 154, 163, 179 }} Но это одна запись. То есть целый массив у меня приходит так: [ { idReq: 1, idUser: [ 173, 154, 163, 179 ] }, { idReq: 2, idUser: [ 191, 154 ] }, { idReq: 3, idUser: [] }, { idReq: 5, idUser: [] }, { idReq: 6, idUser: [] } ] Вот мне и нужно его сразу целиком записать. что бы было так: id| id_request| id_user -----+-------------+------------------------------ 1 | 1 |{{173, 154, 163, 179 }} 2 | 2 |{{ 191, 154 }} 3 | 3 |{{}} 4 | 5 |{{}} 5 | 6 |{{}}
0
|
1254 / 970 / 382
Регистрация: 02.09.2012
Сообщений: 2,995
|
||||||
25.04.2017, 12:53 | 4 | |||||
У вас "целый массив" это что?? Тип данных JSON??
Если JSON, то и работать нужно с ним как с JSON. И синтаксис JSON соблюдать. Для INSERT работает конструкция INSERT... SELECT FROM. Вот примерный набросок
0
|
0 / 0 / 0
Регистрация: 12.12.2016
Сообщений: 15
|
|
25.04.2017, 13:02 [ТС] | 5 |
"Целый" это я для окраски текста Типа там всего лишь переменные, а тут "целый" массивище. Все верно, JSON
Вот, спасибо, я теперь понял примерную конструкцию инсерта подобных массивов, буду копать дальше.
0
|
1254 / 970 / 382
Регистрация: 02.09.2012
Сообщений: 2,995
|
||||||
25.04.2017, 16:34 | 6 | |||||
Получилось вот такое поделие. Одна проблема - пустые JSON-массивы. Они (пустые массивы) проглатываются функцией json_array_elements, которая превращает JSON-массив в записи с элементами массива. А json_array_elements в свою очередь удобна и необходима (вместе с array_agg), чтобы из JSON-массива получить обычный массив целых INT[].
Пришлось обходить проблему пустых массивов через CTE и union all. Кто знает более изящное решение, может поделитесь.
1
|
0 / 0 / 0
Регистрация: 12.12.2016
Сообщений: 15
|
||||||||||||||||||||||||||
25.04.2017, 17:53 [ТС] | 7 | |||||||||||||||||||||||||
Кудесник! Работает, спасибо!
Правда все равно возникает ряд сложностей. Работает без проблем в конструкторе базы. Но по факту запрос идет из Node.js строкой, там беда с кавычками и я создал функцию в постгресе
....
Имеем ошибку: error: invalid input syntax for type json detail: 'Expected ":", but found ",".', where: 'JSON data, line 1: {"{"idReq":1,"idUser":[173,154,163,179]",...', * по два \\ форум обрезает. ну если это важно. Я так понимаю, я как то не так передаю или формирую json объект? Добавлено через 8 минут p.s. В принципе, я мог сформировать массив и такого вида, может поможет? Правда тогда нужно переписать весь запрос. [ {1, [ 173, 154, 163, 179 ] }, { 2, [ 191, 154 ] }, { 3, [] }, { 5, [] }, { 6, [] } ] Добавлено через 1 минуту where: 'JSON data, line 1: {"{//"idReq//":1,//"idUser//":[173,154,163,179]}",...', Добавлено через 5 минут
Добавлено через 4 минуты Короче, заработало)) Спасибо тебе, добрый человек. Надо еще в этом запросе разобраться, ну что к чему. Добавлено через 27 секунд Короче, заработало)) Спасибо тебе, добрый человек. Надо еще в этом запросе разобраться, ну что к чему.
0
|
25.04.2017, 17:53 | |
25.04.2017, 17:53 | |
Помогаю со студенческими работами здесь
7
Выбор массива из многомерного массива по ключу сотировка многомерного массива Вывод многомерного массива Перебор Многомерного массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации
В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
|
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира
В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
|
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин
История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
|
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией
В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
|
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации
В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
|
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий
В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
|
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO
/ / https:/ / leetcode. com/ studyplan/ top-interview-150/
package topInterview
. . .
|
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
|
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
|
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
|
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
|
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации.
Исполнитель Чертежник работает на координатной плоскости, где может. . .
|