Ich versuche, Korrektoren zu erhalten, die nach 2010 veröffentlicht eine oder mehrere Bücher überprüfenDistinct Ergebnis über xQuery
for $r in doc("review.xml")//Reviews//Review,
$b in doc("book.xml")//Books//Book
where $b/Title = $r/BookTitle
and $b/Year > 2010
return {$r/Reviewer}
Im Folgenden sind die beiden XML-Dateien.
review.xml:
<Reviews>
<Review>
<ReviewID>R1</ReviewID>
<BookTitle>B1</BookTitle>
<Reviewer>AAA</Reviewer>
</Review>
<Review>
<ReviewID>R2</ReviewID>
<BookTitle>B1</BookTitle>
<Reviewer>BBB</Reviewer>
</Review>
<Review>
<ReviewID>R3</ReviewID>
<BookTitle>B2</BookTitle>
<Reviewer>AAA</Reviewer>
</Review>
<Review>
<ReviewID>R4</ReviewID>
<BookTitle>B3</BookTitle>
<Reviewer>AAA</Reviewer>
</Review>
<Reviews>
book.xml:
<Books>
<Book>
<Title>B1</Title>
<Year>2005</Year>
</Book>
<Book>
<Title>B2</Title>
<Year>2011</Year>
</Book>
<Book>
<Title>B3</Title>
<Year>2012</Year>
</Book>
</Books>
Ich werde zwei AAA von meinem XQuery-Code. Ich habe mich gefragt, ob ich das eindeutige Ergebnis bekommen kann, was nur ein AAA bedeutet. Ich habe distinct-value() ausprobiert, weiß aber nicht, wie ich es benutzen soll. Danke für deine Antwort!
---- Meine aktualisiert Lösung mit XML-Format für XQuery 1.0 ----
<root>
{
for $x in distinct-values
(
for $r in doc("review.xml")//Reviews//Review,
$b in doc("book.xml")//Books//Book
where $b/Title = $r/BookTitle
and $b/Year > 2010
return {$r/Reviewer}
)
return <reviewer>{$x}</reviewer>
}
</root>
Ich benutze immer noch xQuery 1.0 ... Ich schätze deine Antwort sehr! – user1322538