XML是否有可能在一个XQuery中使用两个返回值?

时间:2015-10-06 22:15:40

标签: xml xquery

所以问题是哪位导演至少导演了两部电影以及电影的标题是什么。

我知道如何获取事实,但我不能让我的查询在没有不必要的迭代的情况下返回两件事。

我的代码如下所示:

let $x := doc("/info.../videos.xml")/result/videos/video

for $director in distinct-values($x/director)
where count($x[director eq $director]) > 2
for $title in $x
where $title/director = $director
return ($director, $title/title)

现在这会返回1个导演和3个标题,但结果如下:

总 标题1

总 标题2

总 TITLE3

是否可以采用这种格式

标题1

标题2

TITLE3

使用相同的代码?例如。通过某种方式在一个Query中使用两个单独的返回值?

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。第二个表达式可以跟在第一个结果序列中的$director

for $director in distinct-values($x/director)
where count($x[director eq $director]) > 2
return ($director,  
  for $title in $x
  where $title/director = $director
  return $title/title)

您还可以将标题查询的结果存储在变量中:

for $director in distinct-values($x/director)
let $titles := 
  for $title in $x
  where $title/director = $director
  return $title/title
where count($x[director eq $director]) > 2
return ($director, $titles)