XQuery中的SQL联合等价物

时间:2013-06-28 21:35:23

标签: sql xquery dtd

我获得了下面提到的XML DTD及其相关的关系数据库模式:

<!DOCTYPE CATALOG [ 
<!ELEMENT CATALOG (TOOL | TOY)+> 
<!ELEMENT TOOL (NAME,SPECIFICATIONS+,OPTIONS?)> 
<!ELEMENT NAME (#PCDATA)> 
<!ELEMENTSPECIFICATIONS (#PCDATA)> 
<!ELEMENT OPTIONS (#PCDATA)> 
<!ELEMENT TOY (NAME,PRICE?)>
<!ELEMENT PRICE (#PCDATA)>]>

Tools(toolid: integer, name: string, options: string) 
Specifications(toolid: integer, specno: integer, spec: string) 
Toys(toyid: integer, name: string, price: string)

如何将以下SQL查询转换为等效的XQuery表达式?

SELECT name FROM Tools
UNION
SELECT name FROM Toys

提前致谢。

1 个答案:

答案 0 :(得分:2)

XQuery结果集是在嵌套时得到平坦的序列(等同于SQL UNION)。

(/Catalog/Tool/name, /Catalog/Toy/name)

但是您无需查询这两个路径,因为<name/>标记可能只出现在<Tool/><Toy/>内,因此您只需使用表达式{{1} }。

相关问题