2009-08-04 14 views
0

Betrachten Sie die Tabellen ..Abfrage in der Update-Abfrage auswählen?

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) 

Dies ist das Update Anw ..

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

Seine Arbeit in Ordnung, aber Ich möchte nicht, dass hart codierten Wert 15 in der Abfrage ..

Die folgende Abfrage ersetzt die 15 ..

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

so .. ich so versucht ..

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' 

es einen Fehler zeigt ..

kann mir jemand sagen, die Art und Weise, dies zu tun ???

Antwort

1

Ich glaube, Sie wollen:

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

Dies ist wahrscheinlich das, was Sie wollen:

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' 
Verwandte Themen