2009-08-04 14 views
0

更新クエリ内でクエリを選択しますか?

UPDATE table1 SET OPTION='K', 
SQLSOURCE='SELECT DEPT_ID FROM TABLE_2 USER_ID= 15 ORDER BY USER_NAME' 
WHERE NAME='GURU' 

細かい作業その、私は、クエリでそのハードコーディングされた値15をたくない ...

。これは、更新のstmt ..です

TABLE_1 
OPTION VARCHAR2 (2), 
NAME VARCHAR2 (50), 
SQLSOURCE VARCAHR2(400) 

TABLE_2 
USER_NAME VARCHAR2 (50), 
USER_ID NUMBER (10) 
DEPT_ID NUMBER (10) 

テーブルを考えてみましょう

次のクエリは、それを置き換えます。

SELECT GROUP_ID FROM TABLE_3 WHERE UPPER(GROUP_NAME)='GROUP1' 

が..だから が、私はこのように試してみました。..

UPDATE table1 SET OPTION='K', 
SQLSOURCE='SELECT DEPT_ID FROM TABLE_2 USER_ID='||(SELECT GROUP_ID FROM TABLE_3 WHERE UPPER(GROUP_NAME)='GROUP1') ORDER BY USER_NAME 
WHERE NAME='GURU' 

それがエラーを示しています。..

は誰もが私にこれを行う方法を伝えることができます?

答えて

1

私は、あなたがしたいと思う:

UPDATE table1 
SET OPTION='K' 
, SQLSOURCE='SELECT DEPT_ID FROM TABLE_2 USER_ID=' 
      ||(SELECT GROUP_ID FROM TABLE_3 WHERE UPPER(GROUP_NAME)='GROUP1') 
      ||' ORDER BY USER_NAME' 
WHERE NAME='GURU' 
3

はこれが何をしたい、おそらくです:

UPDATE table_1 
    SET "OPTION" = 'K', 
     SQLSOURCE = 'SELECT DEPT_ID FROM TABLE_2 USER_ID=' || 
        (SELECT GROUP_ID 
         FROM TABLE_3 
        WHERE UPPER(GROUP_NAME) = 'GROUP1') || 
        ' ORDER BY USER_NAME' 
WHERE NAME = 'GURU' 
関連する問題