不使用Group by的替代xquery

时间:2018-12-07 12:51:15

标签: xquery

以下XML示例显示了“主”类型的数据记录,这些数据记录链接到“系列”类型的0..N内容。我想检测具有相同title()属性的Master的现有Seri​​es记录的数量。

<?xml version="1.0" encoding="UTF-8"?>
<program_file fechaCreacion="20180919184224">
    <version>1.0</version>
    <programs>
        <program id_programa="1">
          <tipo_programa>Master</tipo_programa>
          <titulo >tit1</titulo>
          <año>2018</año>
        </program>
        <program id_programa="2">
          <tipo_programa>Master</tipo_programa>
          <titulo >tit1</titulo>
          <año>2018</año>
        </program>
           <program id_programa="3">
          <tipo_programa>Master</tipo_programa>
          <titulo >tit2</titulo>
          <año>2018</año>
        </program>
        <program id_programa="5">
          <id_serie>1</id_serie>
          <tipo_programa>Series</tipo_programa>
          <episodio>8</episodio>
          <temporada>1</temporada>
          <titulo >tit1</titulo>
          <año>2018</año>
        </program>
        <program id_programa="6">
          <id_serie>2</id_serie>
          <tipo_programa>Series</tipo_programa>
          <episodio>8</episodio>
          <temporada>1</temporada>
          <titulo >tit1</titulo>
          <año>2018</año>
        </program>
        <program id_programa="7">
          <id_serie>3</id_serie>
          <tipo_programa>Series</tipo_programa>
          <episodio>8</episodio>
          <temporada>1</temporada>
          <titulo >tit2</titulo>
          <año>2018</año>
        </program>      
    </programs>
</program_file>

在此示例中,我希望以表格格式获得以下内容: enter image description here

我设法使用Group by进行了查询,以给我正确的结果(使用BaseX)

let $dup_masters := doc("C:/Users/fgarcia/Documents/Optiva/Orange/programs_sample.xml")/program_file/programs
    return
    <distinct-names> {
      for $dups in $dup_masters/program 
        order by $dups/titulo
        group by $title := $dups/titulo
        return
          if(count(distinct-values($dups[tipo_programa="Master"]/@id_programa)) > 1) then
            element {"Master"}
                    { 
                      attribute {"title"} {$title},
                      for $id in distinct-values($dups[tipo_programa="Master"]/@id_programa) 
                      return ( 
                        <td>{$id}</td>, 
                        <td>{count($dups[id_serie=($id)])}</td>
                      )      
                    }
          else ()  
      }</distinct-names>

问题在于,当我将此代码移至Exist-db时,我没有得到任何结果,并且我想知道这是否与Group By in的实现有关。欢迎以不同方式解决此问题的任何想法/提示!

0 个答案:

没有答案