[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