オラクルが HAVING EVERY 句をサポートしていないことを回避する方法を見つけるのに苦労しています。
次のスキーマを持つ、Production と Movie の 2 つのテーブルがあります。
Production (pid, mid)
Movie(mid, director)
ここで、「pid」は出版社 ID を表す整数、「mid」は映画 ID を表す整数、director は映画の監督の名前です。
私の目標は、ピーター・ジャクソンまたはベン・アフレックが監督した映画のみを公開した出版社のリストを (ID で) 取得することです。
これを達成するために、次のクエリを作成しました。
SELECT *
FROM Production P, Movie M
WHERE P.mid = M.mid;
GROUP BY P.pid
HAVING EVERY ( M.director IN ('Ben Affleck', 'Peter Jackson') );
しかし、Oracle は HAVING EVERY をサポートしていないため、次のエラーしか表示されません。
HAVING EVERY ( M.director IN ('ben affleck', 'PJ') )
*
ERROR at line 5:
ORA-00907: missing right parenthesis
監督は出版社が制作するすべての映画に適用する必要があるため、この条件を WHERE 句に移すことはできないと思います。
この障害を回避する方法はありますか? 「標準」と見なされるものはありますか?また (そしておそらくもっと重要なことに) Oracle が HAVING EVERY を実装しないことを選択したのはなぜですか?