предположим, у меня есть этот кусок SQL:
SELECT DISTINCT p.id
FROM PERSON p, ROLE r1
WHERE p.id = r1.id
AND r1.id NOT IN (
SELECT DISTINCT r.id
FROM ROLE r, RESTRICTION re
WHERE r.title = re.title
AND r.production_year = re.production_year
AND (re.description = 'U' OR re.description = 'G')
)
Я хочу преобразовать это в запрос, в котором вместо NOT IN NOT EXISTS.
Я сделал небольшую перестройку и сделал этот запрос, но он все еще не работал (я получил пустой набор по сравнению с результатом первого запроса, который возвратил 200 результатов (что правильно))
SELECT DISTINCT p.id
FROM PERSON p, ROLE r1
WHERE p.id = r1.id
AND NOT EXISTS (
SELECT DISTINCT r.id
FROM ROLE r, RESTRICTION re
WHERE r.title = re.title
AND r.production_year = re.production_year
AND (re.description = 'U' OR re.description = 'G')
AND r1.id <> r.id
)
Почему это не так? и что мне сделать, чтобы это исправить