2015-01-18 2 views
1

스키마와 '갖는'쿼리 : 대체 '그룹에 의해'& 'ALL'

Movie(mID int, title text, year int, director text); 
Reviewer(rID int, name text); 
Rating(rID int, mID int, stars int, ratingDate date); 

나는 필름 당 최대 영화 등급을 반환이 간단한 쿼리를했다.
select title,stars from movie join rating Using(mID) 
group by title 
HAVING MAX(stars) 

나는 Group By, Having and MAX를 사용하지 않고이 쿼리를 만들려고 노력했습니다,하지만 난 내 쿼리 작업을 얻을 수 없습니다.

select title,stars from movie join rating r1 Using(mID) 
where stars >= 
    ALL(select stars from rating r2 where r1.rID=r2.rID AND r1.mID=r2.mID) 

그리고 이것은 그냥 날이 오류가 발생하는 것 같습니다 :

이것은 내가 지금까지 무엇을 가지고 near "all": syntax error:을 내가 SQL Lite에 대한 DB 브라우저를 사용하고 있습니다.

답변

1

이 쿼리 :

select title, stars 
from movie M1 join 
    rating 
    Using mID 
group by title 
having MAX(stars) 

아무 분별하지 않습니다 - having 절에 관하여. 모든 것은 max(stars)이 0이 아닌 행 또는 NULL 인 행을 필터링합니다. 아마 당신이하려는 의도가 아닙니다.

내 생각 엔 가장 높은 등급의 영화를 원한다고 생각하는 것입니다. 그러한 영화가 괜찮 으면 :

select title, max(stars) as stars 
from movie M1 join 
    rating 
    Using mID 
group by title 
order by stars desc 
limit 1;