我很難找出解決Oracle對HAVING EVERY子句缺乏支持的方法。Oracle SQL - 是否有一個標準的HAVING EVERY解決方法?
我有兩個表,生產和影片,下面的模式:
Production (pid, mid)
Movie(mid, director)
其中「PID」是整數,表示發佈者ID,「中」是代表電影ID的整數,而導演是電影導演的名字。
我的目標是獲得僅由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不支持不必每次,我得到的是以下錯誤:
HAVING EVERY (M.director IN ('ben affleck', 'PJ'))
*
ERROR at line 5:
ORA-00907: missing right parenthesis
因爲導演必須適用於出版商製作的每部電影,我不認爲該條件可以轉移到WHERE條款。
圍繞這個障礙有什麼辦法嗎?任何被認爲是「標準」的東西?此外(也許更重要的是)爲什麼Oracle選擇不實施HAVING EVERY?
這似乎這樣的伎倆!太感謝了。 雖然我們在這裏,你知道爲什麼甲骨文沒有實施每一個?我覺得解決方法的代碼非常難懂/難以閱讀,這對我來說是一個非常消極的方面。 – Dan 2013-02-21 22:01:36
+1 - 我誤解了我的答案,因爲我誤解了OP的請求。很好的答案! – sgeddes 2013-02-21 22:31:09