그래, "다니엘 존스턴"이 검토 한 레스토랑 중 "이탈리아어"유형과 적어도 4 점 이상의 평가 점수가 모두있는 레스토랑을 나열해야한다는 질문이 있습니다.EXISTS를 OR과 함께 SQL에 사용할 수 있습니까?
이 쿼리를 시도하는 중 :
SELECT name
FROM RESTAURANT
WHERE EXISTS
(SELECT rest_id
FROM RESTAURANT, RATES
WHERE RESTAURANT.rest_id=RATES.rest_id AND RESTAURANT.type = 'Italian' AND RATES.score>=4)
OR rest_id IN
(SELECT rest_id
FROM REVIEWS, USER
WHERE USER.user_id=REVIEWS.user_id AND USER.fname = 'Daniel' AND USER.sname = 'Johnston');
하지만 오류가 계속 발생합니다. 나는 다른 부분을 따로 따로 달리게했다. 그리고 그들은 ok 다. 그래서 나는 EXISTS와 OR을 사용할 수 없는지 궁금 해서요. 만약 내가 할 수 없다면, 더 좋은 방법은 없을까요?
내 논리는 그것이 이탈리아어이고 적어도 하나 이상의 리뷰 점수가 4 이상이므로 식당의 이름을 원한다는 것입니다. 따라서 EXISTS가 적합하며 두 개의 EXISTS를 사용하면 차이가없는 것처럼 보입니다. 왜 두 번째 부분에 대한 일반 중첩 쿼리로 되돌립니다. 나는 많은 것을 엉망으로 만들었고 내가 틀린 곳을 알아낼 수 없다. 그래서 어떤 도움이라도 대단히 감사하게 될 것이다!
발생하는 오류를 확인하는 것이 도움이 될 수 있습니다. 또한, 어떤 RDBMS를 사용하고 있습니까? –
왜'rest_id IN (...)'을 두 번 사용할 수 없습니까? –