我获得了下面提到的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
提前致谢。
答案 0 :(得分:2)
XQuery结果集是在嵌套时得到平坦的序列(等同于SQL UNION
)。
(/Catalog/Tool/name, /Catalog/Toy/name)
但是您无需查询这两个路径,因为<name/>
标记可能只出现在<Tool/>
和<Toy/>
内,因此您只需使用表达式{{1} }。