[xquery-talk] Using Union Operator without Duplicate Records

Florent Georges lists at fgeorges.org
Sat Dec 29 20:53:54 PST 2007


Alice Wei wrote:

> {for $file in doc("resume_2.xml")//author
> let  $author := distinct-values($file[./@type='co-author' ] union
> $file[./@type='Faculty'])
> order by $author ascending
> return  <li>{data($author)}</li>
> }

  Actually the distinct-values() is in the for body.  So it is called
with a sequence of 0 or 1 item each time.  Try something like the
following instead (the distinct-values() is used here to give the right
sequence to the for):

    for $a in
      <projection>
         <author type="co-author">Andrew Tawfik</author>
         <author type="co-author">Chris Hosler</author>
         <author type="co-author">Michelle Scott</author>
         <author type="Faculty">Michelle Scott</author>
      </projection>
      / distinct-values(.//author[@type = ('co-author', 'Faculty')])
    order by $a ascending return
    <li> {
      data($a)
    }
    </li>

  Result:

    <?xml version="1.0" encoding="UTF-8"?>
    <li>Andrew Tawfik</li>
    <li>Chris Hosler</li>
    <li>Michelle Scott</li>

  Regards,

--drkm






















      _____________________________________________________________________________ 
Ne gardez plus qu'une seule adresse mail ! Copiez vos mails vers Yahoo! Mail http://mail.yahoo.fr



More information about the talk mailing list