Tôi đang gặp khó khăn trong việc tìm ra cách để Oracle thiếu sự hỗ trợ cho mệnh đề HAVING EVERY.Oracle SQL - có giải pháp HAVING EVERY chuẩn không?
Tôi có hai bảng, sản xuất và Movie, với sơ đồ sau:
Production (pid, mid)
Movie(mid, director)
nơi 'pid' là trong số nguyên đại diện cho nhà xuất bản ID, 'giữa' là một số nguyên đại diện cho ID phim, và giám đốc là tên của đạo diễn phim.
Mục tiêu của tôi là nhận danh sách nhà xuất bản (theo ID) chỉ xuất bản các phim do Peter Jackson hoặc Ben Affleck chỉ đạo.
Để đạt được điều này, tôi đã viết các truy vấn sau đây:
SELECT *
FROM Production P, Movie M
WHERE P.mid = M.mid;
GROUP BY P.pid
HAVING EVERY (M.director IN ('Ben Affleck', 'Peter Jackson'));
Nhưng kể từ khi Oracle không hỗ trợ CÓ MỌI, tất cả tôi nhận được là các lỗi sau:
HAVING EVERY (M.director IN ('ben affleck', 'PJ'))
*
ERROR at line 5:
ORA-00907: missing right parenthesis
Vì giám đốc phải áp dụng cho mọi bộ phim do nhà xuất bản sản xuất, tôi không tin rằng điều kiện có thể được chuyển sang mệnh đề WHERE.
Có cách nào xung quanh rào cản này không? Bất cứ điều gì được coi là "tiêu chuẩn"? Ngoài ra (và có lẽ quan trọng hơn) tại sao Oracle lại chọn không triển khai HAVING EVERY?
Đó dường như làm các trick! Cảm ơn rất nhiều. Khi chúng tôi ở đây, bạn có biết tại sao Oracle chưa triển khai HAVING EVERY? Tôi cảm thấy như mã workaround là rất hacky/khó đọc, mà đối với tôi là một khía cạnh rất tiêu cực. – Dan
+1 - Tôi đã xóa câu trả lời của mình khi tôi hiểu lầm yêu cầu OP. Câu trả lời hay! – sgeddes