<html><head>

<link media="all" type="text/css" href="/webmail/static/deg/css/wysiwyg-4230203003.css" rel="stylesheet">
</head><body>
Hi,<br><br>I am using xquery in a sql 2005 database. Many of the xquery functions and axis are not supported so I am trying to do some work-arounds. In the below example, I have a nested FLOWR $Y which searches the xml file for matches to the current context node "for $y in /foo:root/foo:data1[foo:part_number = $x/foo:part_number][1]"<br><br>This works, but is not efficient with large xml content. Sql server doesn't support xpath axises e.g. (parent::foo:root) unless it is used as a predicate, so I a limited on how to navigate up and down the document. Is there a better way? <br><br>DECLARE @x xml<br>SET @x='&lt;foo:root xmlns:foo="http://www.foo/schema"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;foo:data1&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;foo:part_number&gt;1ASD4&lt;/foo:part_number&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;foo:smr&gt;smrcode&lt;/foo:smr&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/foo:data1&gt;<br>&nbsp;&nbsp;&nbsp; &lt;foo:data2&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;foo:cage&gt;09998&lt;/foo:cage&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;foo:part_number&gt;12234&lt;/foo:part_number&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/foo:data2&gt;<br>&nbsp;&nbsp;&nbsp; &lt;foo:data2&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;foo:cage&gt;04568&lt;/foo:cage&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;foo:part_number&gt;1ASD4&lt;/foo:part_number&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/foo:data2&gt;<br>&nbsp;&nbsp;&nbsp; &lt;foo:data2&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;foo:cage&gt;ASBB7&lt;/foo:cage&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;foo:part_number&gt;ZZZSSD4&lt;/foo:part_number&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/foo:data2&gt;<br>&lt;/foo:root&gt;'<br>SELECT @x.query('declare namespace foo="http://www.foo/schema"; (&lt;root&gt; <br>&nbsp;&nbsp;&nbsp; {for $x in /foo:root/foo:data2 return <br>&nbsp;&nbsp;&nbsp; &lt;doc&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;pn&gt;{$x/foo:part_number}&lt;/pn&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;cage&gt;{$x/foo:cage}&lt;/cage&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;smr&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {for $y in /foo:root/foo:data1[foo:part_number = $x/foo:part_number][1]<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; data($y/foo:smr)}<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/smr&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/doc&gt;}<br>&lt;/root&gt;)')<br><br>Thanks,<br><br></body></html>