アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記、SQLコマンドを実行するとMERTINの歩合給がSMITHのSALに格納されません。実行後、NULLが入ってしまいます。
ちゃんとemp表のMERTINのCOMMには値が入っているのになぜ実行結果がうまくいかないのでしょうか?

回答のほどよろしくお願い致します。

update w_emp set sal = (select comm from emp where ename = 'MERTIN') where sal < 1000

SQL> select * from w_emp;

DEPTNO EMPNO ENAME JOB SAL

20 7902 FORD ANALYST 3000
20 7369 SMITH CLERK


10行が選択されました。

SQL> desc w_emp;
名前 NULL? 型
DEPTNO NOT NULL NUMBER(2)
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
SAL NUMBER(7,2)

SQL> desc emp;
名前 NULL? 型
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NOT NULL NUMBER(2)

A 回答 (2件)

sal<1000 という条件では、SAL列がnullのレコードを対象としません。



update w_emp set sal = (select comm from emp where ename = 'MERTIN') where sal < 1000 OR SAL IS NULL

とすれば良いんじゃないですかね。

この回答への補足

回答ありがとうございます。
結果は同じでした。
もし、分かりましたら回答のほどよろしくお願い致します。

補足日時:2005/07/28 07:10
    • good
    • 0

情報が足りません。



SET NULL 'NULL'
SELECT * FROM EMP;
SELECT * FROM W_EMP;

のすべての情報がないとわかりません
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
MERTIN→MARTINの間違いでした。
結果出力はきちんとしたのが出ました。
どうもお騒がせしました。

お礼日時:2005/07/28 21:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!