【发布时间】:2018-03-25 11:27:03
【问题描述】:
我刚刚开始使用 xQuery 作为数据库课程的一部分。对于课程,我们使用的是此处的 mondial 数据库 (https://www.dbis.informatik.uni-goettingen.de/Mondial/)。基本上,该数据库包含有关世界、国家、湖泊、河流等的信息。
我们的一项任务是获取所有拥有岛屿的湖泊的面积,然后按大陆对其进行分组。到目前为止,我已经这样做了:
let $lakes :=
for $lakeList in doc("mondial.xml")/mondial/lake[@island]
for $country in doc("mondial.xml")/mondial/country
where $lakeList/located/@country = $country/@car_code
return <lake area = "{$lakeList/area}" country = "{$country/name}" continent = "{$country/encompassed/@continent}" continentPerc = "{$country/encompassed/@percentage}"></lake>
return ($lakes)
这个查询会产生以下结果:
<lake area="40.2" country="Denmark" continent="europe" continentPerc="100"/>
<lake area="56" country="United Kingdom" continent="europe" continentPerc="100"/>
<lake area="71" country="United Kingdom" continent="europe" continentPerc="100"/>
<lake area="10" country="Russia" continent="europe asia" continentPerc="25 75"/>
<lake area="670" country="Japan" continent="asia" continentPerc="100"/>
<lake area="1.8" country="Philippines" continent="asia" continentPerc="100"/>
<lake area="234.2" country="Philippines" continent="asia" continentPerc="100"/>
<lake area="0.3" country="Philippines" continent="asia" continentPerc="100"/>
<lake area="911" country="Philippines" continent="asia" continentPerc="100"/>
<lake area="354.6" country="Philippines" continent="asia" continentPerc="100"/>
<lake area="1103" country="Indonesia" continent="asia australia" continentPerc="78 22"/>
<lake area="0.04" country="Indonesia" continent="asia australia" continentPerc="78 22"/>
<lake area="11.3" country="Indonesia" continent="asia australia" continentPerc="78 22"/>
<lake area="537.5" country="Canada" continent="america" continentPerc="100"/>
<lake area="5542" country="Canada" continent="america" continentPerc="100"/>
<lake area="104" country="Canada" continent="america" continentPerc="100"/>
<lake area="38.7" country="Canada" continent="america" continentPerc="100"/>
现在求和的问题似乎是某些属性包含多个值。所以不可能按大陆分组。因此,我想拆分具有多个 continent 和 continentPerc 的序列,以便该区域对应于各自的大陆。
我的意思示例:
<lake area="1103" country="Indonesia" continent="asia australia" continentPerc="78 22"/>
应该变成
<lake area="1103" country="Indonesia" continent="asia" continentPerc="78"/>
<lake area="1103" country="Indonesia" continent="australia" continentPerc="22"/>
这可以通过某种方式实现还是我应该选择其他策略?
我非常感谢我能得到的任何帮助和指点,因为我不擅长 Xquery。提前致谢。
【问题讨论】:
标签: xquery