【问题标题】:Inequality in XQueryXQuery 中的不等式
【发布时间】:2014-04-09 17:55:18
【问题描述】:

我正在尝试列出所有 A 的学生的 ID。这是我的 XQuery:

for $s1 in doc("Unv.xml")//Enrollment[Grade = 'A']/StudentInfo/@oID
let $s2 := doc("Unv.xml")//Enrollment[Grade != 'A']/StudentInfo/@oID
where every $id in $s1
satisfies ($id != $s2)
return <StraightA> { $s1 } </StraightA>;

这是我从中提取数据的注册部分的 sn-p:

<Enrollment EnrollmentID="Enrollment217">
    <OfferingInfo oType="OfferingType" oID="Offering009"/>
    <StudentInfo oType="StudentType" oID="s895255243"/>
    <Grade>B</Grade>
</Enrollment>

但是,这只是给了我一个至少有一个 A. 想法的学生列表?

【问题讨论】:

    标签: xquery xquery-sql


    【解决方案1】:

    在 XQuery 中,=!= 是序列比较运算符;它们通过一系列值中的一个匹配来满足。 eqne 是值比较运算符,它们的工作方式符合您的预期。

    【讨论】:

    • 我试过 ne,但它似乎只能与一个值一起使用。由于在我的情况下 $id 和 $s2 都持有多个值,有什么办法可以让我工作吗?
    【解决方案2】:

    $s1 是至少有一个 A 的学生的 id 列表。 $s2 是至少有一个非 A 的学生的 id 列表。

    functx:value-except((1,2,3),(3,4,5))
    (1, 2)
    
      distinct-values($arg1[not(.=$arg2)])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      • 2013-11-13
      相关资源
      最近更新 更多