работа с массивами

Есть таблица table1 с полем float4[][]. Есть другая таблица table2 с полями float, float. Вопрос: как выполнить вставку в table1, чтобы сформировать из двух колонок второй таблицы один массив для первой таблицы?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Работа с массивами

Изображение Игорь

Определите поконкретней структуру таблиц, чтобы точно ответить на ваш вопрос.

CREATE TABLE Table1 (

CREATE TABLE Table1
( column1 int4, column2 float8, column3 float8, id_record int4 NOT NULL DEFAULT nextval(('id_record_v'::text)::regclass),... )

CREATE TABLE Table2
( id_record int4 NOT NULL, Column1 int4, Column2 int4, ... United columns float8[], ...)

Вот приблизительная структура таблиц. Необходимо заполнить UnitedColumn таблицы Table2 значениями из column2 и column3 Table1. То есть значения из указанных колонок определенного набора строк первой таблицы надо разместить в качестве массива в строке второй таблицы.

ВОТЪ

В общем ясно. Я таки нашел решение. Может кому еще пригодится.
Для начала стоит объединить эти столбцы во временной таблице с каким-нибудь признаком для упорядочивания:

INSERT INTO temp(temp_float,reason) SELECT Column1,1 FROM Table1 WHERE ... UNION SELECT Column2,2 FROM Table1 WHERE ...

А потом выполнить следующий запрос:

INSERT INTO Table2 (Column1, Column2 ) VALUES ... | SELECT ... ;
UPDATE Table2 SET UnitedColumn = ( SELECT ARRAY( SELECT temp_float FROM temp ORDER BY reason)) [ WHERE ... ]

После таких нехитрых операций получаем требуемый массив в поле.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023