2015-10-06 102 views
1

所以问题是哪位导演至少演过两部电影,电影的标题是什么。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

导演 标题3

是否有可能得到它以这种格式

主任

标题1

标题2

TITLE3

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

回答

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) 
+0

感谢我没有类似的东西! 用于不同值$导演($ X /导演) 其中count($ X [导演当量$导演])> 1个 设$ Y:= 在$ X 其中$标题/导演= $ $标题导演 回报($标题) 回报($总监,$ Y /标题) 解决我的问题! – Ptru

相关问题