首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xquery distinct-values和group by并选择xquery 1.0

xquery distinct-values和group by并选择xquery 1.0
EN

Stack Overflow用户
提问于 2017-06-17 04:17:12
回答 1查看 382关注 0票数 2

我有一个结构,然后有相同值的元素,但任何元素都会改变值。我需要对信息进行分组并挂载输出。

代码语言:javascript
复制
   <root>
        <cadastro>
            <id>2</id>
            <nome>abcd</nome>
            <links>
                <link>example7</link>
            </links>
        </cadastro>
        <cadastro>
            <id>2</id>
            <nome>abc</nome>
            <links>
                <link>example5</link>
                <link>example3</link>
            </links>
        </cadastro>
        <cadastro>
            <id>5</id>
            <nome>xpto</nome>
            <links>
                <link>example1</link>
            </links>
        </cadastro>
    </root>

我必须只返回2个输出

代码语言:javascript
复制
<results>
        <result>
            <idResult>2</idResult>
            <nome>abc</nome>
            <links>
                <url>example7</url>
                <url>example5</url>
                <url>example3</url>
            </links>
        </result>
        <result>
            <idResult>5</idResult>
            <nome>xpto</nome>
            <links>
                <url>example1</url>
            </links>
         </result>
    <results>

我尝试使用不同的值,但在有效负载中对相同的id有不同的值。在xquery 1.0中如何分组?

EN

回答 1

Stack Overflow用户

发布于 2017-06-17 04:25:32

您可以使用distinct-values遍历惟一的ID,并查询具有该ID的每个匹配元素。

但是,请注意此输出中的一个区别:与2匹配的元素的<nome>值是不同的,并且您的示例仅返回其中的一个。但是不清楚哪一个是正确的,所以这个解决方案输出了两个。如果您只想要一个匹配,那么您需要添加一个约束,这可以像($id-results/nome)[1]一样简单,但不能保证会选择您想要的。

代码语言:javascript
复制
element results {
  let $ids := $data/cadastro/id
  for $id in distinct-values($ids)
  let $id-results := $data/cadastro[id = $id]
  return element result {
    element idResult { $id },
    $id-results/nome,
    element links {
      $id-results/links/link
    }
  }

=>

代码语言:javascript
复制
<results>
  <result>
    <idResult>2</idResult>
    <nome>abcd</nome>
    <nome>abc</nome>
    <links>
      <link>example7</link>
      <link>example5</link>
      <link>example3</link>
    </links>
  </result>
  <result>
    <idResult>5</idResult>
    <nome>xpto</nome>
    <links>
      <link>example1</link>
    </links>
  </result>
</results>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44597327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档