[xquery-talk] xquery distinct-values
Jeff Dexter
jeff.dexter at rainingdata.com
Mon Apr 10 01:20:36 PDT 2006
Jane,
You're either working with an XQuery engine with a glitch or
your file1.xml contains additional data, because as written your
query+data should be fine. Since $x is the outer iterate it can
never produce duplicate values... unless your <namelist> document
contains duplicate <name> elements.
Assuming this is the case, you can re-write your query as
follows to eliminate the duplicates.
for $name in distinct-values(
for $x in doc('file1.xml')/namelist/person
let $y := doc('file2.xml')/carlist/car[@id=$x/carids]
for $value in ($y/style)
where count($y/style[.=$value]) ge 2
return $x/name
)
order by $name descending
return <name>{ $name }</name>
Jeff Dexter
www.rainingdata.com
-----Original Message-----
From: talk-bounces at xquery.com [mailto:talk-bounces at xquery.com] On Behalf
Of Jane Doe
Sent: Sunday, April 09, 2006 11:03 PM
To: talk at xquery.com
Subject: [xquery-talk] xquery distinct-values
First, please accept my apologies if this is the wrong place to post.
I have two xml files.
file1.xml has
<namelist><person>
<name>John</name>
<carids>1</carids>
<carids>3</carids>
<carids>4</carids>
</person></namelist>
file2.xml has
<carlist>
<car id='1'>
<style>sedan</style>
<car id='3'>
<style>coupe</style>
<car id='4'>
<style>sedan</style>
</carlist
I am trying to write an xquery that will return the names with more than
2
of any style:
for $x in doc("file1.xml")/namelist/person
let $y := doc("file2.xml")/carlist/car[@id=$x/carids]
for $value in ($y/style)
where count($y/style[.=$value]) ge 2
order by ($x/name) descending
return <name>{data($x/name)}</name>
This returns the names of everyone with more than 2 of any style, but it
returns that same name multiple times (in relation to the number of
duplicate styles).
I hope it's not too confusing, and I appreciate any help you can give
me.
Thanks,
D
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's
FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
_______________________________________________
talk at xquery.com
http://xquery.com/mailman/listinfo/talk
More information about the talk
mailing list