Dim*_*hev 11
"将来自多个源的数据组合成单个结果的连接是一种非常重要的查询类型.在本节中,我们将说明如何在XQuery中表达几种类型的连接.我们将基于以下三个文档进行示例:
parts.xml
包含许多part
元素的文档; 每个part
依次元素包含partno
和description
子元素.suppliers.xml
包含许多supplier
元素的文档; 每个supplier
依次元素包含suppno
和suppname
子元素.catalog.xml
,其中包含有关供应商和零件之间关系的信息.目录文件包含许多item
元件,其中的每一个又包含partno
,suppno
以及price
子元素.传统("内部")联接返回来自两个或更多相关源的信息,如以下示例所示,其组合来自三个文档的信息.该示例生成从目录文档派生的"描述性目录",但包含部件描述而不是部件号和供应商名称而不是供应商编号.新目录按部件描述按字母顺序排序,其次按供应商名称排序.*
<descriptive-catalog>
{
for $i in fn:doc("catalog.xml")/items/item,
$p in fn:doc("parts.xml")/parts/part[partno = $i/partno],
$s in fn:doc("suppliers.xml")/suppliers
/supplier[suppno = $i/suppno]
order by $p/description, $s/suppname
return
<item>
{
$p/description,
$s/suppname,
$i/price
}
</item>
}
</descriptive-catalog>
Run Code Online (Sandbox Code Playgroud)
上一个查询仅返回有供应商和供应商的零件的信息.一个外部联接被联接从一个或多个参与源,包括那些在其它源没有匹配的元件的元件保留信息.例如,供应商和零件之间的左外连接可能会返回有关没有匹配零件的供应商的信息."
请注意,XQuery没有标准的document()函数(它是一个XSLT函数),而是具有doc()函数,它是" XQuery 1.0和XPath 2.0函数和运算符 "的一部分.
克里斯在答案中至少有两个错误:
fn
"前缀. 归档时间: |
|
查看次数: |
16053 次 |
最近记录: |