user1173339
user1173339

Reputation: 121

Want to have a "for" statement inside a "where" clause in Xquery

I am trying to run the following 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)

But I am getting an error, Unexpected token "for" at line 4. Is this wrong syntax? How can I write a "for" loop inside a "where" clause?

Upvotes: 0

Views: 87

Answers (1)

dirkk
dirkk

Reputation: 6218

A for always requires a return statement, as you did in your inner loop. Hence, it should be

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)

Upvotes: 1

Related Questions