У меня есть XML-документ,
<resultsets>
<row>
<first_name>Georgi</first_name>
<last_name>Facello</last_name>
</row>
<row>
<first_name>Bezalel</first_name>
<last_name>Simmel</last_name>
</row>
<row>
<first_name>Bezalel</first_name>
<last_name>Hass</last_name>
</row>
</resultsets>
Я хочу отсортировать имена и удалить повторяющиеся имена, чтобы получить это:
<resultsets>
<row>
<first_name>Bezalel</first_name>
<last_name>Simmel</last_name>
</row>
<row>
<first_name>Georgi</first_name>
<last_name>Facello</last_name>
</row>
</resultsets>
Ниже приведен код, который я написал:
for $last_name at $count1 in doc("employees.xml")//last_name,
$first_name at $count2 in doc("employees.xml")//first_name
let $f := $first_name
where ( $count1=$count2 )
group by $f
order by $f
return
<row>
{$f}
{$last_name}
</row>
Однако этот код сортирует XML-документ по именам, но не может удалить повторяющееся имя ('Bezalel'), он возвращает:
<resultsets>
<row>
<first_name>Bezalel</first_name>
<last_name>Simmel</last_name>
</row>
<row>
<first_name>Bezalel</first_name>
<last_name>Hass</last_name>
</row>
<row>
<first_name>Georgi</first_name>
<last_name>Facello</last_name>
</row>
</resultsets>
Я знаю, как решить эту проблему с помощью двух операторов FLOWR. group by
странное поведение, не могли бы вы объяснить, почему он не удаляет дубликаты? Есть ли способ решить эту проблему, используя ОДИН цикл FLOWR и ТОЛЬКО $first_name
и $last_name
две переменные? Спасибо,