-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>

? これは非常に基本的なことですが、要点がわかりません

4

1 に答える 1

0

@Ranonのアドバイスに従ってください。ただし、クエリから推測する:最も簡単な方法は、XQuery3.0と新しいgroup-by-statementを使用できる場合です。

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>
于 2012-11-18T13:16:33.603 に答える