使用Enrollment.xml和Person.xml文档,我正在尝试列出拥有所有A的学生的姓名。 Person中的ID字段指的是Enrollment中的StudentID字段。每个人注册的课程都有一个入学条目(不是每个学生一个条目)
我似乎无法弄清楚如何编写查询
Enrollment.xml表单 - >
<Document>
<Table>
<StudentID>170815037</StudentID>
<Grade>C</Grade>
</Table>
<Table>
<StudentID>193847547</StudentID>
<Grade>A</Grade>
</Table>
</Document>
Person.xml表单 - &gt;
<Document>
<Table>
<Name>Wee Fletcher</Name>
<ID>115423723</ID>
</Table>
</Document>
继承人正在努力工作,我无法让它工作
for $a in doc("proj3/Person.xml")/Document/Table/ID
where every $s in doc("proj3/Enrollment.xml")//Table[StudentID = $a]
satisfies ($s/Grade = "A")
return $a/Name;
答案 0 :(得分:2)
存在一个小问题:您将$a
设置为doc("proj3/Person.xml")/Document/Table/ID
,稍后访问$a/Name
(返回不存在的.../Table/ID/Name
)。
更改第一行中的作业和第二行的比较(在此处添加/ID
),您的代码就可以了:
for $a in doc("proj3/Person.xml")/Document/Table
where every $s in doc("proj3/Enrollment.xml")//Table[StudentID = $a/ID]
satisfies ($s/Grade = "A")
return $a/Name;