Mam problem z ustaleniem sposobu na brak wsparcia Oracle dla klauzuli HAVING EVERY.Oracle SQL - czy istnieje standard, który zapewnia KAŻDE obejście problemu?
Mam dwie tabele, produkcja i film, z następującym schematem:
Production (pid, mid)
Movie(mid, director)
gdzie „pid” jest liczbą całkowitą reprezentującą identyfikator wydawcy, „średni” jest liczbą całkowitą reprezentującą filmowy identyfikator, a reżyser to jest imię reżysera filmu.
Moim celem jest zdobycie listy wydawców (według ID), którzy publikowali tylko filmy w reżyserii Petera Jacksona lub Bena Afflecka.
W celu osiągnięcia tego, co napisałem następujące zapytanie:
SELECT *
FROM Production P, Movie M
WHERE P.mid = M.mid;
GROUP BY P.pid
HAVING EVERY (M.director IN ('Ben Affleck', 'Peter Jackson'));
Ale ponieważ Oracle nie obsługuje MIEĆ KAŻDY, wszystko mam jest następujący błąd:
HAVING EVERY (M.director IN ('ben affleck', 'PJ'))
*
ERROR at line 5:
ORA-00907: missing right parenthesis
Bo reżyserstwo musi odnosić się do każdego filmu wyprodukowanego przez wydawcę, nie sądzę, aby warunek ten mógł zostać przeniesiony do klauzuli WHERE.
Czy istnieje jakiś sposób obejścia tego problemu? Coś, co jest uważane za "standardowe"? Również (i być może ważniejsze), dlaczego Oracle zdecydowało się nie wdrażać KAŻDEGO?
To wydaje się rade! Stukrotne dzięki. Kiedy jesteśmy tutaj, czy wiesz, dlaczego firma Oracle nie wdrożyła KAŻDEGO? Czuję, że kod obejścia jest bardzo trudny do odczytania, co jest dla mnie bardzo negatywnym aspektem. – Dan
+1 - Usunąłem moją odpowiedź, ponieważ źle zrozumiałem prośbę PO. Niezła odpowiedź! – sgeddes