2013-02-14 6 views
0

내 XML 문서는 다음과 같은 값 :XQuery를 그룹화하고

<books> 
    <book><author>A</author></book> 
    <book><author>B</author></book> 
    <book><author>C</author></book> 
    <book><author>B</author></book> 
    <book><author>C</author></book> 
</books> 

지금, 쿼리가 가장 책 저자의 이름을 반환해야합니다. 이 경우 B,C (두 권 모두 책이 있기 때문에). 문제는 하나의 쿼리 만 사용해야한다는 것입니다. 따라서 최대 2 개를 찾고 두 권의 책으로 저자를 검색하는 것은이 경우에는 용인 할 수없는 해결책입니다.

답변

2

작성자가 그룹화하고 즉시 발행 된 결과를 해당 발행물의 수와 함께 저장합니다. 그런 다음 최대 게시 횟수로 작성자 만 반환하도록 필터링합니다.

+0

간단히 말해서 OP가 2 단계이기 때문에 원하지 않는 OP와 정확히 일치합니다. – wst

+0

이것은 단일 쿼리입니다. 중간 결과를 저장하지 않으면 필터링 할 수없는 것을 찾아야하기 때문에 중간 결과를 저장할 수 없습니다. 대안은'$ authors'를 정렬하고 첫 번째 결과와 비교하는 것이지만 더 나은 최적화 가능성이있을 수 있지만 결국에는 실행 파이프 라인이 중단됩니다. –

+0

나는 당신에게 동의하지만, 이것을 하나의 쿼리로 호출하는 것은 쉽지 않다. 원래 질문에서 OP가 2 패스를 원하지 않는다고 생각합니다. 이러한 종류의 쿼리를 원하면 빈도 데이터가있는 인덱스가 필요합니다. – wst