2014-11-17 2 views
0

Я пытаюсь выполнить следующую XQUERY:Хотите иметь «для» заявления внутри «где» пункт в XQUERY

for $a1 in doc("TSS_Data.xml")/root/auditions/audition, $a2 in doc("TSS_Data.xml")/root/auditions/audition 
where ($a1/@ID != $a2/@ID and $a1/@contestantId != $a2/@contestantId and $a1/@artworkId = $a2/@artworkId and 
$a1/@showId = $a2/@showId) 
    for $s1 in doc("TSS_Data.xml")/root/scores/score[@auditionId = $a1/@ID], 
    $s2 in doc("TSS_Data.xml")/root/scores/score[@auditionId = $a2/@ID] 
     return data (doc("TSS_Data.xml")/root/contestants/contestant[@ID = $a1/@contestantId]/@name) 

Но я получаю сообщение об ошибке, Неожиданный маркер «для» в строке 4 Является ли этот неправильный синтаксис? Как я могу написать цикл «за» внутри предложения «где»?

ответ

1

A for всегда требует инструкции return, как и во внутреннем цикле. Следовательно, это должно быть

for $a1 in doc("TSS_Data.xml")/root/auditions/audition, $a2 in doc("TSS_Data.xml")/root/auditions/audition 
where ($a1/@ID != $a2/@ID and $a1/@contestantId != $a2/@contestantId and $a1/@artworkId = $a2/@artworkId and $a1/@showId = $a2/@showId) 
return 
    for $s1 in doc("TSS_Data.xml")/root/scores/score[@auditionId = $a1/@ID], 
    $s2 in doc("TSS_Data.xml")/root/scores/score[@auditionId = $a2/@ID] 
     return data (doc("TSS_Data.xml")/root/contestants/contestant[@ID = $a1/@contestantId]/@name) 
Смежные вопросы