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

ORA-00904: "D"."DEPT": 無効な識別子です。

先ほども似たような質問をしましたが原因がよく分からないなのでご存知の方教えていただければ幸いです。

SELECT D.DEPTNO, E.ENAME, E.SAL FROM EMP E, DEPT D WHERE E.SAL >ANY (SELECT MAX(E.SAL) FROM DEPT D, EMP E GROUP BY D.DEPT)

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)

SQL> DESCRIBE DEPT;
名前 NULL? 型
----------------------------------------- -------- ----------------------------
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)

A 回答 (2件)

続きです。


よく見ると?なところが何箇所かありますね。

SELECT D.DEPTNO, E.ENAME, E.SAL FROM EMP E, DEPT D WHERE E.SAL >ANY (SELECT MAX(E.SAL) FROM DEPT D, EMP E GROUP BY D.DEPT)

EMPとDEPTを結合していないですね。
これではEMP×DEPT行数出てきてしまいますよ。
D.DEPTNO=E.DEPTNOであるなら、出力したいのはEMPの項目だけでDEPTの項目はいらない、つまりDEPTを結合しなくてもよさそうですが。
何を求めようとしているのでしょうか?
    • good
    • 0
この回答へのお礼

lovesens様の回答により訂正させて頂きましたらキチンとした実行結果が返ってきました。
本当にありがとうございます。

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

ORACLEで開発やってます(SE暦5年)



>SELECT MAX(E.SAL) FROM DEPT D, EMP E GROUP BY D.DEPT

D.DEPTでGROUP BYしたいのであれば、

SELECT D.DEPT,MAX(E.SAL) FROM DEPT D, EMP E GROUP BY D.DEPT

しないとまずいと思います。
D.DEPTがないのにD.DEPTでGROUP BYしようとしているので、D.DEPTが無効な識別子だと怒られるのです。
    • good
    • 0

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

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