在 BaseX 中工作,我试图列出包含书店的 xml 数据库中的出版商数量以及每个出版商有多少本书。所以我有以下 xquery:
let $publisher:= distinct-values(doc("bookstore.xml")/bookstore/book/publisher)
for $value in ($publisher)
let $count := count($publisher= $value)
order by $value ascending
return concat($value," ",$count)
这仅返回发布者列表和 1:
出版商A 1
出版商B 1
出版商C 1
等等。假设我的 xml 中有每个出版商的几本书,我找不到显示这一点的方法。
let $publisher:= distinct-values(doc("bookstore.xml")/bookstore/book/publisher)
for $value in ($publisher)
let $count := count($publisher= $value)
order by $value ascending
Results:
Publisher A 1
Publisher B 1
Publisher C 1
由于
$publisher
仅包含不同的发布者,因此 count($publisher= $value)
始终会返回 1。
尝试
let $all-publishers:= doc("bookstore.xml")/bookstore/book/publisher
let $distinct-publishers := distinct-values($all-publishers)
for $value in $distinct-publishers
let $count := count($all-publishers = $value)
但是使用
group by
来处理这个问题可能会更好。