プロが教えるわが家の防犯対策術!

ORA-00904: "EMPNO": 無効な識別子です と表示されます。
解決方法知っている方、教えていただければ幸いです。

SELECT EMPNO, ENAME, D.DEPTNO, DNAME FROM DEPT D WHERE EMPNO =
(SELECT EMPNO FROM EMP WHERE MGR IS NULL)

SQL> DESCRIBE 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件)

SELECT E.EMPNO, E.ENAME, E.DEPTNO, D.DNAME


FROM DEPT D,EMP E WHERE D.EMPNO = E.EMPNO
and E.MGR is null

この回答への補足

回答ありがとうございます。
下記SQLコマンド(副問合せ文)になおさせて頂きましたが、MGR IS NULL のレコードは1件のはずなのに4件出力されます。
何故でしょうか?
回答のほどよろしくお願いいたします。

SELECT EMPNO, ENAME, E.DEPTNO, DNAME
FROM DEPT,EMP E WHERE E.EMPNO =
(SELECT EMPNO FROM EMP WHERE MGR IS NULL)

実行結果
EMPNO ENAME DEPTNO DNAME
---------- ---------- ---------- --------------
7839 KING 10 ACCOUNTING
7839 KING 10 RESEARCH
7839 KING 10 SALES
7839 KING 10 OPERATIONS

補足日時:2005/07/13 21:04
    • good
    • 0

SELECT EMPNO FROM EMP WHERE MGR IS NULLの結果は一件 EMPNO 7839ですけど 条件にはEMPとDEPTの結合条件がないので最後の件数はDEPTの件数と同じです。



無条件結合です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
1 SELECT EMPNO, ENAME, E.DEPTNO, DNAME
2 FROM EMP E, dept D WHERE E.EMPNO =
3* (SELECT EMPNO FROM EMP E WHERE MGR IS NULL) AND E.DEPTNO = D.DEPTNO

の記述で無事求めたい結果を出せました。

お礼日時:2005/07/14 21:19

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

関連するカテゴリからQ&Aを探す