XQuery

berniebert

Grünschnabel
Hallo zusammen,
ich habe hier einen XQuery, der als Ergebnis die höchste ID aus Dokumenten in einer Datenbank liefern soll (Dokumente in einer XML-DB sind dazu mit einem ID-Attribut versehen). Als Ergebnis wird "99" zurückgegeben, obwohl viel höhere IDs vorhanden sind. Kann mir jemand erklären woran das liegt?

Code:
let $y := for $doc in //text[@type='dokument'] 
order by $doc//@id 
return $doc 
return xs:string($y[fn:last()]/@id)

Vielen dank! B
 
aha, ich habe es gerade selbst herausbekommen. die sortierung ist in meiner anfrage:

1
10
100
101
102
...
11
...
99

um zahlen richtig zu sortieren muss man order by number() benutzen:

Code:
let $y :=
for $doc in //text[@type='charter']
order by number($doc//@id) 
return $doc
return xs:string($y[fn:last()]/@id)

gruss b
 
Zurück