HAVING EVERY句に対するオラクルのサポートの欠如を回避する方法を見つけるのに問題があります。Oracle SQL - すべての回避策がある標準がありますか?
私は、次のスキーマを持つ2つのテーブル、生産や映画、持っている:「pidは」発行者IDを表す整数である場合、「中期」は映画のIDを表す整数である、と監督は
Production (pid, mid)
Movie(mid, director)
を映画監督の名前。
私の目標は、Peter JacksonまたはBen Affleck監督の映画のみを公開している出版社(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はEVERYをHAVINGサポートしていないため、私が得るすべては次のエラーです:
HAVING EVERY (M.director IN ('ben affleck', 'PJ'))
*
ERROR at line 5:
ORA-00907: missing right parenthesis
ので、役員は出版社によって制作されたすべての映画に適用されなければならない、私は条件がWHERE句に移動できるとは思わない。
このロードブロッキングの周りには方法がありますか? 「標準」とみなされるものは何ですか?また、(そしておそらくもっと重要なのは)オラクルがなぜそれを実践しないことを選んだのですか?
!感謝万円。 私たちはここにいるのに、なぜオラクルがどのように実装されていないのか知っていますか?私は回避コードが非常にハッキー/読みにくいように感じます。それは私にとっては非常に否定的な側面です。 – Dan
+1 - OPリクエストを誤解したため、私の答えを削除しました。いい答え! – sgeddes