Outer join : Join « XQuery « XML






Outer join


File: Data.xml

<order>
  <car model="A">
    <id>0001</id>
    <name language="en">name 1</name>
    <colorChoices>navy black</colorChoices>
  </car>
  <car model="B">
    <id>0002</id>
    <name language="en">name 2</name>
  </car>
  <car model="B">
    <id>0003</id>
    <name language="en">name 3</name>
  </car>
  <car model="C">
    <id>0004</id>
    <name language="en">name 4</name>
    <colorChoices>white gray</colorChoices>
    <desc>Our <i>favorite</i> shirt!</desc>
  </car>
</order>

File: prices.xml

<prices>
  <priceList effDate="2006-11-15">
    <prod id="0001">
      <price currency="USD">29.99</price>
      <discount type="CLR">10.00</discount>
    </prod>
    <prod id="0002">
      <price currency="USD">69.99</price>
    </prod>
    <prod id="0003">
      <price currency="USD">39.99</price>
      <discount type="CLR">3.99</discount>
    </prod>
  </priceList>
</prices>


File: Query.xquery

for $car in doc("Data.xml")//car
return <car id="{$car/id}">{
                attribute price
                   {for $price in doc("prices.xml")//prices/priceList/prod
                    where $car/id = $price/@id
                    return $price/price}
  }</car>

 








Related examples in the same category

1.Two-way join in a predicate
2.Two-way join in a where clause
3.Three-way join in a where clause