XQuery无法返回目标数据求助:XML学习项目查询问题
排查你的XQuery查询问题
嘿,我来帮你搞定这个XQuery的问题!你的代码主要有几个关键问题,我一一给你拆解:
核心问题分析
- 路径层级搞反了:你现在循环的是
/Vodafone/Customer/Contract/Expiration,这意味着$x指向的是单个Expiration节点。但客户的Lastname(你需求里要的是姓氏,不是FirstName哦)是在Customer节点下的,不是Expiration的子节点,所以$x/FirstName根本找不到对应的元素,自然返回不了正确结果。 - 需求与返回值不匹配:你的目标是返回客户的
Lastname,但代码里写的是return $x/FirstName,这明显和你的需求不符。 - 遍历对象选错:要关联客户和他们的合同到期时间,应该先遍历
Customer节点,再检查该客户下的合同是否满足到期时间条件,这样才能正确拿到对应的客户信息。
修正后的代码
基础版本(返回所有符合条件的客户姓氏,含重复)
for $customer in /Vodafone/Customer where $customer/Contract/Expiration/Year < 2020 return $customer/Lastname
去重版本(如果一个客户有多个符合条件的合同,只返回一次姓氏)
distinct-values( for $customer in /Vodafone/Customer where $customer/Contract/Expiration/Year < 2020 return $customer/Lastname )
代码说明
现在$customer指向每个客户节点,我们检查该客户下的所有合同的到期年份是否有小于2020的,然后返回对应的Lastname——这样路径逻辑正确,也完全匹配你的需求啦。
内容的提问来源于stack exchange,提问作者user9323079
相关产品推荐
相关产品推荐

