2016-03-20 8 views
1

巡航範囲が1000 KMを超える航空機にのみ認定されている従業員の名前を印刷します。 HAVING EVERY句のサポートのSQL文エラー

SELECT E.ename 
FROM Employees E, Certified C, Aircraft A 
WHERE C.aid = A.aid AND E.eid = C.eid 
GROUP BY E.eid, E.ename 
HAVING EVERY (A.cruisingrange > 1000) 

Oracleの欠如はそれを修正する方法エラー

ORA-00907: missing right parenthesis 

を生成しますか?

答えて

5

の代わりにすべての、最も小さいものを選択し、そのゴードンは、私が言及するのを忘れてしまった、言ったように1000年

SELECT E.ename 
FROM Employees E 
INNER JOIN Certified C ON E.eid = C.eid 
INNER JOIN Aircraft A ON C.aid = A.aid 
GROUP BY E.ename 
HAVING MIN(A.cruisingrange) > 1000 

よりも大きい、私はあなたの明示に暗黙の(カンマ区切り)から結合構文を固定していることを確認構文を結合します。 2つ以上のテーブルを扱うときに間違いを招く可能性のある一般的な暗黙的な結合構文の使用を避けてください。

+1

あなたは「1000未満」と言っていたので、私は何を使うべきかわかりませんでしたが、1000以上のSQLを書きました。@JoachimIsakssonは、彼が言ったことを行った:) – sagi

+0

さらに、 'join'構文を修正しました! –

+0

申し訳ありませんが、それ以上の長さで、すでに修正済みです。 – rain