【发布时间】:2013-11-29 18:45:12
【问题描述】:
我有这个 xml
<Edu>
<Department>
<Student>
<name>jack</name>
<Std_ID>12345678</Std_ID>
<Degree>MS</Degree>
</Student>
<Student>
<name>melin</name>
<Std_ID>56784921</Std_ID>
<Degree>PHD</Degree>
</Student>
<Student>
<name>sali</name>
<Std_ID>54673821</Std_ID>
<Degree>MS</Degree>
</Student>
<Student>
<name>parisa</name>
<Std_id>54321876</Std_id>
<Degree>BS</Degree>
</Student>
<Student>
<name>caty</name>
<Std_ID>87654321</Std_ID>
<Degree>MS</Degree>
</Student>
</Department>
<Course>
<name>programing</name>
<Student>
<name>jack</name>
<Std_ID>12345678</Std_ID>
<Degree>MS</Degree>
</Student>
<Student>
<name>sali</name>
<Std_ID>54673821</Std_ID>
<Degree>MS</Degree>
</Student>
<Student>
<name>parisa</name>
<Std_id>54321876</Std_id>
<Degree>BS</Degree>
</Student>
</Course>
<Course>
<name>network</name>
<Student>
<name>jack</name>
<Std_ID>12345678</Std_ID>
<Degree>MS</Degree>
</Student>
</Course>
<Course>
<name>Database</name>
<Student>
<name>jack</name>
<Std_ID>12345678</Std_ID>
<Degree>MS</Degree>
</Student>
<Student>
<name>caty</name>
<Std_ID>87654321</Std_ID>
<Degree>MS</Degree>
</Student>
</Course>
<Course>
<Student>
<name>jack</name>
<Std_ID>12345678</Std_ID>
<Degree>MS</Degree>
</Student>
<Student>
<name>caty</name>
<Std_ID>87654321</Std_ID>
<Degree>MS</Degree>
</Student>
</Course>
</Edu>
我想列出拥有超过 2 门课程的 MS 学位的学生,或拥有超过 1 门课程的 BS 学生。我的意思是我想要拥有超过 2 门课程的 MS 学位的学生或拥有超过一门课程的学士学位的学生的姓名。我想要这两个列表。 这是我的 xquery:但它不起作用:
for $i in doc("XMLFile_Q2.xml")/Edu/Department/Student[Degree="MS" or Degree="BS"]
let $counter :=0
for $a in doc("XMLFile_Q2.xml")/Edu/Course
where $a/Student[name]=$i[name]
let $counter := $counter+1
return if($a/Student[Degree]="MS" and $counter gt 2 )
then $a/Student/name
else if($a/Student[Degree]="BS" and $counter gt 1)
then $a/Student/name/text()
else()
【问题讨论】:
-
Updating counter in XQuery 的可能重复项
标签: xquery