如何使用XQUERY显示消除重复的项目?

如何使用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>

我对XQuery有一个问题。逻辑是:

获取以“Manuel”开头的所有教师的姓名,消除重复,并指明每个教师班级的所有教室。按名称从最短到最长排序

我已经这样做了:

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”,或多个教室元素?非常感谢!!它工作得很好!!现在我更明白了。再次感谢@马德斯·汉森