xquery - XQuery 产生不正确的输出
问题描述
示例 xml 如下所示:
<sales>
............
<customer custid="108">
<name>NORTH WOODS HEALTH AND FITNESS SUPPLY CENTER</name>
<address>98 LONE PINE WAY</address>
<city>HIBBING</city>
<state>MN</state>
<zip>55649</zip>
<area>612</area>
<phone>566-9123</phone>
<repid>7844</repid>
<creditlimit>8000</creditlimit>
<ord ordid="613">
<orderdate>1987-02-01</orderdate>
<shipdate>1987-02-01</shipdate>
<total>6400</total>
<item itemid="1">
<product_ref ref="100871"/>
<actualprice>5.6</actualprice>
<qty>100</qty>
<itemtot>560</itemtot>
</item>
</ord>
</customer>
<product prodid="100860">
<descrip>ACE TENNIS RACKET I</descrip>
<price>
<stdprice>35</stdprice>
<minprice>28</minprice>
<startdate>1986-06-01</startdate>
</price>
</product>
.........
</sales>
let $product := doc('sales.xml')/sales/product
for $item in doc('sales.xml')/sales/customer/ord/item
where $item/actualprice < $product[@prodid=$item/product_ref/@ref]/price/minprice
return $item
结果我得到:
<item itemid="1">
<product_ref ref="100861"/>
<actualprice>35</actualprice>
<qty>1</qty>
<itemtot>35</itemtot>
</item>
<item itemid="3">
<product_ref ref="101863"/>
<actualprice>10</actualprice>
<qty>150</qty>
<itemtot>1500</itemtot>
</item>
<item itemid="7">
<product_ref ref="101863"/>
<actualprice>12.5</actualprice>
<qty>200</qty>
<itemtot>2500</itemtot>
</item>
<item itemid="5">
<product_ref ref="101863"/>
<actualprice>9</actualprice>
<qty>100</qty>
<itemtot>900</itemtot>
</item>
但是 ref=101863 的项目是不对的。只有 id=5 的项目小于 minprice。为什么会出现这个错误?尝试了很多不同的查询,但它总是给我相同的结果。它适用于 ref=100861。
解决方案
假设查询不支持模式,您将两个价格作为字符串而不是数字进行比较。在比较之前,您需要将两者都转换为数字。
推荐阅读
- android - Glide在RecyclerView的条件句中乱码
- flutter - 颤振:[错误:颤振/lib/ui/ui_dart_state.cc(166)]未处理的异常
- c++ - PostgreSQL 无法访问
- php - 无法在 php 中创建具有相同项目名称的多个项目的数组
- xaml - 如何检测输入来自 UWP 中 TextBox 中的 IME?
- javascript - 为什么即使函数是异步的,这个函数调用也会抛出“await 仅在异步函数中有效”语法错误?
- class - 可以将框架视为一类类吗?
- mongodb - 如何使用 flask_mongoalchemy 在烧瓶中配置 Mongodb-Atlas?
- java - 如何在单个活动应用程序android上完成片段
- r - 将箱线图从高到低重新排序