我試圖根據另外兩個表中的數據將數值插入表中。這些數字值與表SL_TERMS
中的字符串相關聯。這些字符串用於其他表UPLOAD_TEST
,其中包含我想要填充的數據PC_TEST
。根據另一個表中的字符串插入關聯的ID
例如,如果UPLOAD_TEST
在SL_TERMS table
中具有字符串「environment」並且其ID爲1,我想要將值1插入到PC_TEST
中。下面是代碼的兩個例子至今:
INSERT INTO PC_TEST (TEST_ID, WHAT_ID, DATA_FORM)
SELECT PC_TEST_SEQ.NEXTVAL, t.TERM_ID, e.DATA_FORM FROM SL_TERMS t, UPLOAD_TEST e
WHERE t.TERM_ID IN
(SELECT WHAT FROM UPLOAD_TEST e WHERE e.WHAT = t.TERM_NAME AND t.TERM_NAME = t.TERM_ID);
--TERM_NAME is the field that has the string associated with the needed ID
而且
INSERT INTO PC_TEST (TEST_ID, WHAT_ID, DATA_FORM)
SELECT PC_TEST_SEQ.NEXTVAL, t.TERM_ID, e.DATA_FORM FROM SL_TERMS t
INNER JOIN UPLOAD_TEST e
ON e.WHAT = t.TERM_NAME AND t.TERM_NAME = t.TERM_ID; --using join keyword
兩個給ORA-01722:無效數字錯誤。 WHAT_ID
和TERM_ID
字段都是數字。有沒有可能的字符串沒有正確匹配?在這種情況下,我可能需要將TRIM
和/或LOWER
函數應用於來自UPLOAD_TEST
的字符串。任何幫助/建議表示讚賞。
e.WHAT
和t.TERM_NAME
是具有一對多關係的相同字段。因此,在SL_TERMS
中,值TERM_NAME = 'environment'
存在一次,其相關聯的TERM_ID = 1
也存在一次。它可能存在於UPLOAD_TEST
的多個記錄中。
因此流程爲e.WHAT
(string) - >t.TERM_NAME
(string) - >t.TERM_ID
(number)。
原因我等於t.TERM_NAME
到t.TERM_ID
是因爲我呼籲e.WHAT
(t.TERM_NAME
)時我需要相關的ID。我不知道這是否是正確的方法(看起來不像),所以如果有方法從字符串(TERM_NAME
)中調用ID(TERM_ID
),那就是我所需要的。
你確定't.TERM_NAME = t.TERM_ID'嗎?你說'TERM_ID'是一個數字,但它聽起來不像'TERM_NAME'也是一個數字,請將所有三個表結構和一些示例數據添加到您的問題中,但我懷疑該子句只是需要刪除。 –
讓我知道是否我的編輯不夠明確 – snl330