打印仅在巡航范围超过1000公里的飞机上获得认证的员工姓名。
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缺乏对HAVING EVERY
子句的支持会产生错误
ORA-00907: missing right parenthesis
如何解决?
答案 0 :(得分: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
正如戈登所说,我忘了提及,我将你的连接语法从隐式(逗号分隔)修改为显式连接语法。尽量避免使用隐式连接语法,这会在处理两个以上的表时导致错误。