XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Conferences Close Tree View
+ Stylus Studio Feature Requests (1192)
+ Stylus Studio Technical Forum (14621)
+ Website Feedback (249)
+ XSLT Help and Discussion (7625)
- XQuery Help and Discussion (2017)
-> + Problems with FTP upload via X... (3)
-> + What path notation works when ... (6)
-> - Xquery Exception (1)
-> + [java] [Fatal Error] Test.xml:... (2)
-> + unable to produce correct XML ... (2)
-> + where can I find stylusxql uti... (3)
-> + Trouble Mapping Multiple Eleme... (3)
-> - input parameter (1)
-> - set element value (1)
-> + Xquery Performance Issue (21)
-> + Run Xquery Program using Java (3)
-> + XQuery XML to CSV (3)
-> + XQuery MySQL connector (4)
-> + XQuery with JDBC connection is... (3)
-> + Create FTP Server (2)
-> - XQuery Nested Loop Lookup (5)
-> ->XQuery Nested Loop Lookup
-> ->XQuery Nested Loop Lookup
-> ->XQuery Nested Loop Lookup
-> ->XQuery Nested Loop Lookup
-> + Xpath using a Variable for [@I... (2)
-> - My xqDoc option is disabled. (1)
-> + Xpath ancestor selection (4)
-> + Exception: sequence of more th... (2)
-- [1-20] [21-40] [41-60] Next
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
Topic  
Postnext
Rick ScofieldSubject: XQuery Nested Loop Lookup
Author: Rick Scofield
Date: 09 Feb 2014 10:27 AM
Need some help with a Xquery nested loop. Both files are about 30k lines long and growing. I'm trying to match the <Sku> value in the $mivabod file with the <upc> value in the $carhbod file and return the <sku> or <upc> and the <qtyavail> from the $carhbod file. I have the xquery code here that takes about 30min to complete.

something like...
SELECT $carhbod/qtyavail FROM $carhbod WHERE $mivabod/Sku = $carbod/upc
Can anyone help with a more efficient way to do this?
This xQuery takes way too long...

===begin code===
declare variable $mivabod as document-node(element(*, xs:untyped)) external;
declare variable $carbod as document-node(element(*, xs:untyped)) external;

<root>
{
for $miva in $mivabod/table/row/Sku
for $carh in $carbod/root/row[upc = $miva]
return
<carqty>
<UPC>{$miva/text()}</UPC>
<quantity>{$carh/qtyavail/text()}</quantity>
</carqty>
}
</root>
===end code===

Postnext
Ivan PedruzziSubject: XQuery Nested Loop Lookup
Author: Ivan Pedruzzi
Date: 09 Feb 2014 11:59 AM
Hi Rick,

Variable $A and $B mimic your input documents, the loop outputs the elements with the same id.

Does it help?

Ivan Pedruzzi
Stylus Studio Team



declare variable $A :=
<A>
<A id="0">A0</A>
<A id="1">A1</A>
</A>;

declare variable $B :=
<B>
<B id="0">B0</B>
<B id="2">B2</B>
</B>;

<root>{
for $a in $A/A,
$b in $B/B
where $a/@id = $b/@id
return <match A="{$a}" B="{$b}"/>
}</root>

=========================
<root>
<match A="A0" B="B0"/>
</root>

Postnext
Rick ScofieldSubject: XQuery Nested Loop Lookup
Author: Rick Scofield
Date: 09 Feb 2014 01:20 PM
Originally Posted: 09 Feb 2014 12:20 PM
Thanks Ivan, I believe I've tried your suggestion already. Is the following code doing the same as your suggestion?

I can see the difference, do id attributes match faster that elements?

declare variable $mivabod as document-node(element(*, xs:untyped)) external;
declare variable $carbod as document-node(element(*, xs:untyped)) external;

<root>
{
for $miva in $mivabod/table/row
for $carh in $carbod/root/row
where $miva/Sku/text() = $carh/upc/text()
return ...
...


Postnext
Ivan PedruzziSubject: XQuery Nested Loop Lookup
Author: Ivan Pedruzzi
Date: 10 Feb 2014 09:18 AM

If you cannot make it work, the only option is to send us samples of the two input documents at stylussupport@ivitechnologies.com

Ivan Pedruzzi
Stylus Studio Team

Posttop
Rick ScofieldSubject: XQuery Nested Loop Lookup
Author: Rick Scofield
Date: 10 Feb 2014 03:11 PM
Thanks Ivan,
I have emailed the project files.

Thanks again, Rick

   
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.