2

次の「ANY」構文を使用しようとすると、エラーが発生します。

SELECT DISTINCT Em.ename
FROM Emp Em, Dept D
WHERE Em.eid In (Select D.managerid 
                 FROM Dept D
                 GROUP BY D.managerid
                 HAVING EVERY (D.budget > 1000000) AND ANY (D.budget < 5000000)
             );

エラー出力:

psql:queries.sql:28: ERROR:  syntax error at or near "ANY"
LINE 6:      HAVING EVERY (D.budget > 1000000) AND ANY (D.budget < 5...
                                                     ^

編集: Postgres を使用しており、Psql を使用して接続しています。

4

2 に答える 2

5

もっと簡単にできますよね?

SELECT DISTINCT Em.ename
FROM Emp Em, Dept D
WHERE Em.eid In (Select D.managerid 
                 FROM Dept D
                 WHERE D.budget > 1000000             
                 GROUP BY D.managerid
                 HAVING MIN(D.budget) < 5000000
             );

また

SELECT DISTINCT Em.ename
FROM Emp Em, Dept D
WHERE Em.eid In (Select D.managerid 
                 FROM Dept D
                 GROUP BY D.managerid
                 HAVING EVERY (D.budget > 1000000) AND MIN(D.budget) < 5000000
             );

また

SELECT DISTINCT Em.ename
FROM Emp Em, Dept D
WHERE Em.eid In (Select D.managerid 
                 FROM Dept D
                 GROUP BY D.managerid
                 HAVING MIN (D.budget) > 1000000 AND MIN(D.budget) < 5000000
             );
于 2011-11-30T16:19:30.763 に答える
1
SELECT Em.ename
FROM Emp Em                                            --- only Emp table
WHERE Em.eid In (Select D.managerid 
                 FROM Dept D
                 GROUP BY D.managerid
                 HAVING ALL (D.budget > 1000000)       --- ALL
                   AND ANY (D.budget < 5000000)
             );
于 2011-11-30T16:45:41.410 に答える