2012-11-18 3 views
-1

나는 XQuery에있는 초보자입니다, 그리고 내 문제는 고유 값에 대해, 나는 영화 리뷰어에게반송 결과의 고유 값()이 작동하지 않습니까?

xquery version "1.0"; 
declare boundary-space preserve; 
<result> 
{for $reviews in doc("reviews.xml")/reviews/review, 
    $movie in doc("movies.xml")/movies/movie 
where $reviews/movie_title = $movie/movie_title 
    and $movie//movie_genre = "Drama" 
    and $movie//month > 6 
order by $reviews/movie_reviewer descending 
return 
(<reviewer>{distinct-values($reviews/movie_reviewer)}</reviewer>, '&#xa;') 
} 
</result> 

를 검색에 다음 코드를 사용하고 나중에 내가

xquery version "1.0"; 
declare boundary-space preserve; 
<result> 
{for $reviews in doc("reviews.xml")/reviews/review, 
    $movie in doc("movies.xml")/movies/movie 
where $reviews/movie_title = $movie/movie_title 
    and $movie//movie_genre = "Drama" 
    and $movie//month > 6 
return 
{for $content in distinct-values($reviews/movie_reviewer) 
     order by $content descending 
     return (<reviewer>{$content}</reviewer>, '&#xa;')} 
} 
</result> 

하지만 난에 코드를 변경 내가

같은 결과를 만들 수있는 방법

<result> 
<reviewer>Wesley Barry</reviewer> 
<reviewer>Michael Gordon</reviewer> 
<reviewer>Michael Gordon</reviewer> 
<reviewer>Michael Gordon</reviewer> 
<reviewer>John Frankenheimer</reviewer> 
<reviewer>J. Lee Thompson</reviewer> 
<reviewer>J. Lee Thompson</reviewer> 
<reviewer>Charles Walters</reviewer> 
<reviewer>Charles Walters</reviewer> 
</result> 

와 비슷한 결과를 얻었다

<result> 
<reviewer>Wesley Barry</reviewer> 
<reviewer>Michael Gordon</reviewer> 
<reviewer>John Frankenheimer</reviewer> 
<reviewer>J. Lee Thompson</reviewer> 
<reviewer>Charles Walters</reviewer> 
</result> 

? 나는 이것이 아주 기본적인 것을 알고 있지만, 나는 그 점을 얻을 수 없다.

+1

예 : [gist.github.com] (http://gist.github.com/) (질문에 추가하십시오)! 무엇이 잘못되었는지는 데이터 구조에 따라 크게 달라집니다. –

답변

0

@ Ranon의 조언을 따르십시오. 그러나 쿼리에서 추측 : 가장 쉬운 방법은 XQuery 3.0과 새로운 그룹 별 구문을 사용할 수 있는지 여부입니다.

xquery version "3.0"; 
declare boundary-space preserve; 
<result> 
{for $reviews in doc("reviews.xml")/reviews/review, 
    $movie in doc("movies.xml")/movies/movie 
let $reviewer := $reviews/movie_reviewer 
where $reviews/movie_title = $movie/movie_title 
    and $movie//movie_genre = "Drama" 
    and $movie//month > 6 
group by $reviewer 
order by $reviewer descending 
return 
(<reviewer>{$reviewer}</reviewer>, '&#xa;') 
} 
</result> 
관련 문제