[xquery-talk] xquery distinct-values

Jane Doe becauseur at hotmail.com
Mon Apr 10 21:45:57 PDT 2006


This query did it!  I tried the one previously recommended, but since the ID 
was not of ID type, I wasn't able to get it to work, even with playing 
around with it.

This did the job.

Thanks so much for all of your help, and for your QUICK response.  It's very 
much appreciated.
D



>From: "Jeff Dexter" <jeff.dexter at rainingdata.com>
>To: "'Jane Doe'" <becauseur at hotmail.com>, <talk at xquery.com>
>Subject: RE: [xquery-talk] xquery distinct-values
>Date: Mon, 10 Apr 2006 00:20:36 -0700
>
>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
>
>
>_______________________________________________
>talk at xquery.com
>http://xquery.com/mailman/listinfo/talk

_________________________________________________________________
Is your PC infected? Get a FREE online computer virus scan from McAfee® 
Security. http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963



More information about the talk mailing list