Слегка разночтение по вашей просьбе, как это неясно, если вы хотите, чтобы ответы по отдельности (в виде переменной) или в том же результату:
let $game :=
<game>
<event player_id="14937" type_id="1" outcome="0" event_id="1" qualifier_id="2"/>
<event player_id="14937" type_id="1" outcome="1" event_id="1" qualifier_id="2"/>
<event player_id="14937" type_id="1" outcome="1" event_id="1" qualifier_id="2"/>
<event player_id="14937" type_id="1" outcome="1" event_id="1" qualifier_id="2"/>
<event player_id="14999" type_id="1" outcome="2" event_id="1" qualifier_id="2"/>
</game>
let $matching-results := for $e in $game/event
where $e/@player_id = 14937
and $e/@type_id = 1
and $e/@qualifier_id = 2
return $e
return <usp>
{
for $outcome-type in fn:distinct-values($matching-results/@outcome)
let $outcome-count := fn:count($matching-results[@outcome=$outcome-type])
return <outcome type="{$outcome-type}">{$outcome-count}</outcome>
}
</usp>
Результаты:
<usp>
<outcome type="0">1</outcome>
<outcome type="1">3</outcome>
</usp>
I сначала получили результаты кандидата, прежде чем создавать список возможных результатов (0 и 1), а не дополнительные значения, которые могут быть найдены в других записях и не совпадают здесь. Вот почему нет результата типа = «2», хотя я засеял данные одним для теста (игрок, заканчивающийся на 999)
Замечательно, любая информация о том, как вызвать basex из автономного (что автономно использовать)? Как система знает, куда идти и искать файл xquery? Я думаю, должен быть заменен на <фактическое имя файла xquery>? Спасибо за вашу помощь! –
Koen
Вы выполняете BaseX, как и любую другую программу с вашей конкретной операционной системой. Пожалуйста, ознакомьтесь с нашей документацией по адресу http://docs.basex.org/wiki/Main_Page, чтобы ответить на ваши основные вопросы. – dirkk