如何使用XQUERY显示消除重复的项目?
我对XQuery有一个问题。逻辑是: 获取以“Manuel”开头的所有教师的姓名,消除重复,并指明每个教师班级的所有教室。按名称从最短到最长排序 我已经这样做了:如何使用XQUERY显示消除重复的项目?,xquery,distinct-values,Xquery,Distinct Values,我对XQuery有一个问题。逻辑是: 获取以“Manuel”开头的所有教师的姓名,消除重复,并指明每个教师班级的所有教室。按名称从最短到最长排序 我已经这样做了: for $x in (doc("LMSGI06")//course[starts-with(teacher, "Manuel")]) order by string-length($x/teacher) return <teacher>
for $x in (doc("LMSGI06")//course[starts-with(teacher, "Manuel")])
order by string-length($x/teacher)
return
<teacher>
<name>{data(distinct-values($x/teacher))}</name>
<classroom>{data($x/classroom)}</classroom>
</teacher>`
x美元(doc(“LMSGI06”)//课程[以(教师,“Manuel”)开头])
按字符串长度排序($x/教师)
返回
{数据(不同的值($x/teacher))}
{数据($x/教室)}
`
这是我查询的结果:
<teacher>
<name>Manuel Gómez</name>
<classroom>2</classroom>
</teacher>
<teacher>
<name>Manuel Gómez</name>
<classroom>3</classroom>
</teacher>
<teacher>
<name>Manuela Berenguel</name>
<classroom>1</classroom>
</teacher>
<teacher>
<name>Manuel Antonio López</name>
<classroom>1</classroom>
</teacher>
曼努埃尔·戈梅斯
2.
曼努埃尔·戈梅斯
3.
曼努埃拉·贝伦格尔
1.
曼努埃尔·安东尼奥·洛佩斯
1.
xml的结构如下所示:
<shop>
<education>
<course id="1">
<teacher>Manuela Berenguel</teacher>
<classroom>1</classroom>
</course>
</education>
</shop>
曼努埃拉·贝伦格尔
1.
我只需要曼努埃尔·戈麦斯出现一次,但我不知道怎么做。我正在使用distinct-values()
,但它不起作用。有人能帮我吗?distinct-values()
在当前脚本中没有帮助,因为您在生成元素时将其应用于每个教师姓名。因此,一次只有一个值,distinct-values()
返回正在处理的当前值
为了消除名称重复,您需要将distinct-values()
应用于所有教师元素值。然后,您需要决定如何在输出中表示多个课堂值。如果该教师有多个课程,则以下内容将生成多个课堂元素
let $manuel-courses := doc("LMSGI06")//course[starts-with(teacher, "Manuel")]
for $teacher in distinct-values($manuel-courses/teacher)
order by string-length($teacher)
return
<teacher>
<name>{data($teacher))}</name>
{$manuel-courses[teacher = $teacher]/classroom)}
</teacher>`
let$manuel课程:=doc(“LMSGI06”)//课程[以(教师,“manuel”)开头]
不同价值的$teacher($manuel课程/教师)
按字符串长度排序($teacher)
返回
{data($teacher))}
{$manuel课程[教师=$teacher]/教室)}
`
您是否希望Manuel Gómez教室具有值:“2”或值“3”,或“2,3”,或多个教室元素?非常感谢!!它工作得很好!!现在我更明白了。再次感谢@马德斯·汉森