Я использую PostgreSQL 9.1 для Windows.
Я автоматически собираю данные с компьютера в базу данных PostgreSQL, и это работает правильно.Данные сохраняются в нескольких таблицах, и одна из них, которая меня интересует, называется testrecord
.У меня есть вторая статическая таблица с именем testcode
и соединение между таблицами.Я хочу выбрать некоторые из входящих данных в testrecord
и заполнить новую таблицу с именем finaldata
, где есть совпадение для parameter
и testid
, которое не является пустым (ноль).
Вопрос 1
Является ли INSERT INTO
и JOIN
лучшим способом сделать это?
Вопрос 2
Все поля на данный момент являются varchar.Когда я добавляю целое поле в таблицу finaldata
(например, с последовательным автоматическим увеличением), я получаю сообщения, такие как column "FdataID" is of type integer but expression
is of type character varying
или column "FdataID" is of type integer
but expression is of type record
Код моей функции приведен ниже:
INSERT INTO finaldata
SELECT
"testrecord"."Record",
"testrecord"."Sample",
"testrecord"."SampleOrig",
"testrecord"."Parameter",
"testrecord"."Result",
"testrecord"."ResultOrig",
"testrecord"."Units",
"testrecord"."OperatorID",
"testrecord"."ObsTime",
"testrecord"."MsgTime",
"testcode"."Machine",
"testcode"."TestName",
"testcode"."ShortTestName",
"testcode"."TestID"
FROM testrecord
LEFT OUTER JOIN testcode
ON ("testrecord"."Parameter" = "testcode"."Parameter")
AND ("testrecord"."Machine" = "testcode"."Machine")
WHERE ("testcode"."TestID") IS NOT NULL;