开发者

xquery return value off by one

<?xml version="1.0" encoding="UTF-8"?> 
<library> 
  <items> 
    <book asin="0201100886"
      created="128135928"
      lastLookupTime="128135928"> 
      <uuid>BA57A934-6CDC-11D9-830B-000393D3DE16</uuid> 
      <title>Compilers</title> 
      <authors> 
    <author>Alfred V. Aho</author> 
    <author>Ravi Sethi</author> 
    <author>Jeffrey D. Ullman</author> 
      </authors> 
      <publisher>Addison Wesley</publisher> 
      <published>1986-01-01</published> 
      <price>102.00</price> 
      <purchaseDate>2005-01-22</purchaseDate> 
    </book> 

    <book asin="0122513363" created="128135600" lastLookupTime="128136224"> 
      <uuid>F7468E09-6CDB-11D9-830B-000393D3DE16</uuid> 
      <title>Database Driven Web Sites</title> 
      <authors><author>Jesse Feiler</author></authors> 
      <publisher>Morgan Kaufmann</publisher> 
      <published>1998-04-15</published> 
      <edition>Paperback</edition> 
      <price>50.95</price> 
      <purchaseDate>2005-01-22</purchaseDate> 
      <currentValue>35.00</currentValue> 
      <netRating>1.5</netRating> 
      <genres> 
        <genre>Computer Bks - Internet</genre> 
        <genre>Computer Books: Web Programming</genre> 
        <genre>Computer Networks</genre> 
        <genre>Computers</genre> 
        <genre>Database Management - General</genre> 
        <genre>Database management</genre> 
        <genre>Design</genre> 
        <genre>Distributed Databases</genre> 
        <genre>Information Technology</genre> 
        <genre>Internet - Web Site Design</genre> 
        <genre>Networking - General</genre> 
        <genre>Web sites</genre> 
        <genre>Computers / Computer Science</genre> 
      </genres> 
      <upc>608628133638</upc> 
    </book> 

    <book asin="0201441241"
      created="128136896"
      lastLookupTime="128136896"> 
      <uuid>FBC45DF4-6CDE-11D9-830B-000393D3DE16</uuid> 
      <title>Introduction to Automata Theory, Languages, and Computation (2nd Edition)</title> 
      <authors> 
    <author>John E. Hopcroft</author> 
    <author>Rajeev Motwani</author> 
    <author>Jeffrey D. Ullman</author> 
      </authors> 
      <publisher>Addison Wesley</publisher> 
      <published>2000-11-14</published> 
      <price>108.20</price> 
      <purchaseDate>2005-01-22</purchaseDate> 
    </book> 


    <book asin="0471250600"
      created="128136896"
      lastLookupTime="128136896"> 
      <uuid>FBC7CA56-6CDE-11D9-830B-000393D3DE16</uuid> 
      <title>Operating System Concepts</title> 
      <authors> 
    <author>Abraham  Silberschatz</author> 
    <author>Greg  Gagne</author> 
    <author>Peter Baer  Galvin</author> 
      </authors> 
      <publisher>Wiley</publisher> 
      <published>2002-03-08</published> 
      <price>107.95</price> 
      <purchaseDate>2005-01-22</purchaseDate> 
    </book> 

    <book asin="0321193628"
      created="128136896"
      lastLookupTime="128136896"> 
      <uuid>FBCB3DCF-6CDE-11D9-830B-000393D3DE16</uuid> 
      <title>Concepts of Programming Languages, Sixth Edition</title> 
      <authors><author>Robert W. Sebesta</author></authors> 
      <publisher>Addison Wesley</publisher> 
      <published>2003-07-24</published> 
      <price>112.40</price> 
      <purchaseDate>2005-01-22</purchaseDate> 
    </book> 

    <book asin="0138613370" created="128136944" lastLookupTime="128136944"> 
      <uuid>19E5E602-6CDF-11D9-830B-000393D3DE16</uuid> 
      <title>First Course in Database Systems, A</title> 
      <authors> 
    <author>Jeffrey D. Ullman</author> 
    <author>Jennifer Widom</author> 
      </authors> 
      <publisher>Prentice Hall</publisher> 
      <published>1997-04-02</published> 
      <edition>Hardcover</edition> 
      <price>67.00</price> 
      <purchaseDate>2005-01-22</purchaseDate> 
      <netRating>3.2</netRating> 
      <genres> 
        <genre>Computer Books: Database</genre> 
        <genre>Computers</genre> 
        <genre>Database Engineering</genre> 
        <genre>Database Management - General</genre> 
        <genre>Database management</genre> 
      </genres> 
      <recommendations> 
        <book asin="0130402648"
              created="128136952"
              lastLookupTime="128136952"> 
          <uuid>1C60074A-6CDF-11D9-830B-000393D3DE16</uuid> 
          <title>Database System Implementation</title> 
          <authors> 
            <author>Hector Garcia-Molina</author> 
            <author>Jeffrey D. Ullman</author> 
            <author>Jennifer D. Widom</author> 
          </authors> 
          <publisher>Prentice Hall</publisher> 
          <published>1999-06-11</published> 
          <price>89.00</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="0130319953"
              created="128136952"
              lastLookupTime="128136952"> 
          <uuid>1C635DB0-6CDF-11D9-830B-000393D3DE16</uuid> 
          <title>Database Systems: The Complete Book</title> 
          <authors> 
            <author>Hector Garcia-Molina</author> 
            <author>Jeffrey D. Ullman</author> 
            <author>Jennifer D. Widom</author> 
          </authors> 
          <publisher>Prentice Hall</publisher> 
          <published>2001-10-02</published> 
          <price>98.00</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="0201976994"
              created="128136952"
              lastLookupTime="128136952"> 
          <uuid>1C66B7B4-6CDF-11D9-830B-000393D3DE16</uuid> 
          <title>Computer Networking: A Top-Down Approach Featuring the Internet</title> 
          <authors> 
            <author>James F. Kurose</author> 
            <author>Keith W. Ross</author> 
            <author>James Kurose</author> 
            <author>Keith Ross</author> 
          </authors> 
          <publisher>Addison Wesley</publisher> 
          <published>2002-07-17</published> 
          <price>100.00</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="0131433512"
              created="128136952"
              lastLookupTime="128136952"> 
          <uuid>1C6AC88C-6CDF-11D9-830B-000393D3DE16</uuid> 
          <title>Computer Networks and Internets, Fourth Edition</title> 
          <authors> 
            <author>Douglas E Comer</author> 
            <author>Ralph E. Droms</author> 
          </authors> 
          <publisher>Prentice Hall</publisher> 
          <published>2003-07-28</published> 
          <price>100.00</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="0262062178"
              created="128136952"
              lastLookupTime="128136952"> 
          <uuid>1C6E712C-6CDF-11D9-830B-000393D3DE16</uuid> 
          <title>Essentials of Programming Languages - 2nd Edition</title> 
          <authors> 
            <author>Daniel P. Friedman</author> 
            <author>Mitchell Wand</author> 
            <author>Christopher T. Haynes</author> 
          </authors> 
          <publisher>The MIT Press</publisher> 
          <published>2001-01-29</published> 
          <price>62.00</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="0471250600"
              created="128136952"
              lastLookupTime="128136952"> 
          <uuid>1C71B23E-6CDF-11D9-830B-000393D3DE16</uuid> 
          <title>Operating System Concepts</title> 
          <authors> 
            <author>Abraham  Silberschatz</author> 
            <author>Greg  Gagne</author> 
            <author>Peter Baer  Galvin</author> 
          </authors> 
          <publisher>Wiley</publisher> 
          <published>2002-03-08</published> 
          <price>107.95</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="0137903952"
              created="128136952"
              lastLookupTime="128136952"> 
          <uuid>1C764AD4-6CDF-11D9-830B-000393D3DE16</uuid> 
          <title>Artificial Intelligence: A Modern Approach (2nd Edition)</title> 
          <authors> 
            <author>Stuart J. Russell</author> 
            <author>Peter Norvig</author> 
          </authors> 
          <publisher>Prentice Hall</publisher> 
          <published>2002-12-20</published> 
          <price>93.33</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="155860832X"
              created="128136952"
              lastLookupTime="128136952"> 
          <uuid>1C898640-6CDF-11D9-830B-000393D3DE16</uuid> 
          <title>Computer Networks: A Systems Approach, 3rd Edition</title> 
          <authors> 
            <author>Larry L. Peterson</author> 
            <author>Bruce S. Davie</author> 
          </authors> 
          <publisher>Morgan Kaufmann</publisher> 
          <published>2003-05-22</published> 
          <price>89.95</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="0130669474"
              created="128136952"
              lastLookupTime="128136952"> 
          <uuid>1C8DD37A-6CDF-11D9-830B-000393D3DE16</uuid> 
          <title>SQL Fundamentals (2nd Edition)</title> 
          <authors><author>John J. Patrick</author></authors> 
          <publisher>Prentice Hall PTR</publisher> 
          <published>2002-05-07</published> 
          <price>54.99</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="0321122267"
              created="128136952"
              lastLookupTime="128136952"> 
          <uuid>1C91D772-6CDF-11D9-830B-000393D3DE16</uuid> 
          <title>Fundamentals of Database Systems, Fourth Edition</title> 
          <authors> 
            <author>Ramez Elmasri</author> 
            <author>Shamkant B. Navathe</author> 
          </authors> 
          <publisher>Addison Wesley</publisher> 
          <published>2003-07-23</published> 
          <price>104.20</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
      </recommendations> 
    </book> 

    <book asin="1558604820" created="128136024" lastLookupTime="128136024"> 
      <uuid>F3C7B24F-6CDC-11D9-830B-000393D3DE16</uuid> 
      <title>A Complete Guide to DB2 Universal Database</title> 
      <authors> 
        <author>D. D. Chamberlin</author> 
        <author>Don Chamberlin</author> 
      </authors> 
      <publisher>Morgan Kaufmann</publisher> 
      <published>1998-08-15</published> 
      <edition>Paperback</edition> 
      <price>62.95</price> 
      <purchaseDate>2005-01-22</purchaseDate> 
      <netRating>4.4</netRating> 
      <genres> 
        <genre>Computer Bks - Data Base Management</genre> 
        <genre>Computer Books: Database</genre> 
        <genre>Computers</genre> 
        <genre>Database Management - General</genre> 
        <genre>General</genre> 
        <genre>IBM Database 2</genre> 
        <genre>Information Storage &amp; Retrieval</genre> 
        <genre>Relational Databases</genre> 
        <genre>Computers / Information Storage &amp; Retrieval</genre> 
      </genres> 
      <recommendations> 
        <book asin="0072133449"
              created="128136024"
              lastLookupTime="128136024"> 
          <uuid>F6B35F21-6CDC-11D9-830B-000393D3DE16</uuid> 
          <title>DB2: The Complete Reference (Complete Reference Series)</title> 
          <authors> 
            <author>Roman B. Melnyk</author> 
            <author>Paul C. Zikopoulos</author> 
          </authors> 
          <publisher>McGraw-Hill Companies</publisher> 
          <published>2001-10-01</published> 
          <price>59.99</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="0130661112"
              created="128136024"
              lastLookupTime="128136024"> 
          <uuid>F6B97E54-6CDC-11D9-830B-000393D3DE16</uuid> 
          <title>DB2 UDB v8 Handbook for Windows and UNIX/Linux</title> 
          <authors><author>Philip K. Gunning</author></authors> 
          <publisher>Prentice Hall PTR</publisher> 
          <published>2003-08-06</published> 
          <price>59.99</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="0131007726"
              created="128136024"
              lastLookupTime="128136024"> 
          <uuid>F6BCBB88-6CDC-11D9-830B-000393D3DE16</uuid> 
          <title>DB2 SQL Procedural Language for Linux, Unix and Windows</title> 
          <authors> 
            <author>Paul Yip</author> 
            <author>Drew Bradstock</author> 
            <author>Hana Curtis</author> 
            <author>Michael Gao</author> 
            <author>Zamil Janmohamed</author> 
            <author>Clara Liu</author> 
            <author>Fraser McArthur</author> 
          </authors> 
          <publisher>Prentice Hall PTR</publisher> 
          <published>2002-12-24</published> 
          <price>59.99</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="0131424653"
              created="128136024"
              lastLookupTime="128136024"> 
          <uuid>F6C0A296-6CDC-11D9-830B-000393D3DE16</uuid> 
          <title>DB2 UDB V8.1 Certification Exam 700 Study Guide</title> 
          <authors><author>Roger E. Sanders</author></authors> 
          <publisher>Prentice Hall PTR</publisher> 
          <published>2003-09-17</published> 
          <price>49.99</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="0764508415"
              created="128136024"
              lastLookupTime="128136024"> 
          <uuid>F6C4058C-6CDC-11D9-830B-000393D3DE16</uuid> 
          <title>DB2 Fundamentals Certification for Dummies</title> 
          <authors> 
            <author>Paul C.  Zikopoulos</author> 
            <author>Jennifer  Gibbs</author> 
            <author>Roman B.  Melnyk</author> 
          </authors> 
          <publisher>For Dummies</publisher> 
          <published>2001-08-01</published> 
          <price>34.99</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="0130463612"
              created="128136024"
              lastLookupTime="128136024"> 
          <uuid>F6D9A3D8-6CDC-11D9-830B-000393D3DE16</uuid> 
          <title>DB2 Universal Database V8 for Linux, UNIX, and Windows Database Administration Certification Guide (5th Edition)</title> 
          <authors> 
            <author>George Baklarz</author> 
            <author>Bill Wong</author> 
          </authors> 
          <publisher>Prentice Hall PTR</publisher> 
          <published>2003-02-10</published> 
          <price>59.99</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="0130463884"
              created="128136024"
              lastLookupTime="128136024"> 
          <uuid>F6DDBAB9-6CDC-11D9-830B-000393D3DE16</uuid> 
          <title>Advanced DBA Certification Guide and Reference for DB2 UDB v8 for Linux, Unix and Windows</title> 
          <authors> 
            <author>Dwaine R. Snow</author> 
            <author>Thomas Xuan Phan</author> 
            <author>Dwaine Snow</author> 
          </authors> 
          <publisher>Prentice Hall PTR</publisher> 
          <published>2003-07-07</published> 
          <price>59.99</price> 
          <purchaseDate>开发者_如何转开发;2005-01-22</purchaseDate> 
        </book> 
        <book asin="155860443X"
              created="128136024"
              lastLookupTime="128136024"> 
          <uuid>F6E1063D-6CDC-11D9-830B-000393D3DE16</uuid> 
          <title>Advanced Database Systems (The Morgan Kaufmann Series in Data Management Systems)</title> 
          <authors> 
            <author>Carlo Zaniolo</author> 
            <author>Stefano Ceri</author> 
            <author>Christos Faloutsos</author> 
            <author>Richard T. Snodgrass</author> 
            <author>V. S. Subrahmanian</author> 
            <author>Roberto Zicari</author> 
          </authors> 
          <publisher>Morgan Kaufmann</publisher> 
          <published>1997-05-01</published> 
          <price>88.95</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="0131840487"
              created="128136024"
              lastLookupTime="128136024"> 
          <uuid>F6E441CE-6CDC-11D9-830B-000393D3DE16</uuid> 
          <title>DB2 UDB V8.1 Certification Exams 701 and 706 Study Guide</title> 
          <authors><author>Roger E. Sanders</author></authors> 
          <publisher>Prentice Hall PTR</publisher> 
          <published>2003-12-12</published> 
          <price>49.99</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
        <book asin="0132037955"
              created="128136024"
              lastLookupTime="128136024"> 
          <uuid>F6E77C2C-6CDC-11D9-830B-000393D3DE16</uuid> 
          <title>DB2 High Performance Design and Tuning</title> 
          <authors> 
            <author>Richard Yevich</author> 
            <author>Susan Lawson</author> 
            <author>Richard A. Yevich</author> 
          </authors> 
          <publisher>Prentice Hall PTR</publisher> 
          <published>2000-08-24</published> 
          <price>54.99</price> 
          <purchaseDate>2005-01-22</purchaseDate> 
        </book> 
      </recommendations> 
    </book> 
  </items> 
  <borrowers> 
    <borrower id="1"> 
      <name> John Doe </name> 
      <phone> 555-1212 </phone> 
      <borrowed> 
    <book asin="0138613370"/> 
    <book asin="0122513363"/> 
      </borrowed> 
    </borrower> 
    <borrower id="2"> 
      <name> Mary Jane </name> 
      <phone> 555-1213 </phone> 
      <borrowed> 
    <book asin="0201100886"/> 
    <book asin="0122513363"/> 
      </borrowed> 
    </borrower> 
    <borrower id="3"> 
      <name> Bill Jones </name> 
      <phone> 555-1312 </phone> 
      <borrowed /> 
    </borrower> 
    <borrower id="4"> 
      <name> Anne Marie</name> 
      <phone> 555-1314</phone> 
      <borrowed> 
    <book asin="0138613370"/> 
    <book asin="0201100886"/> 
    <book asin="0122513363"/> 
    <book asin="1558604820"/> 
      </borrowed> 
    </borrower> 
  </borrowers> 
</library> 

I need to return everyone that borrowed a book, their name and the title of the book.

Here is my xQuery:

xquery version "1.0";
for $library in doc("library.xml")/library
for $book in $library/items/book
  let $borrowed := $library/borrowers/borrower
return
<borrower>
<name>
{data($borrowed/name)}
</name>
<title>
{data($book[@asin = $borrowed//book/@asin]/title)}
</title>
</borrower>

Here is what it returns:

<borrower>
<name> John Doe  Mary Jane  Bill Jones  Anne Marie</name>
<title>Compilers</title>
</borrower>
<borrower>
<name> John Doe  Mary Jane  Bill Jones  Anne Marie</name>
<title>Database Driven Web Sites</title>
</borrower>
<borrower>
<name> John Doe  Mary Jane  Bill Jones  Anne Marie</name>
<title/>
</borrower>
<borrower>
<name> John Doe  Mary Jane  Bill Jones  Anne Marie</name>
<title/>
</borrower>
<borrower>
<name> John Doe  Mary Jane  Bill Jones  Anne Marie</name>
<title/>
</borrower>
<borrower>
<name> John Doe  Mary Jane  Bill Jones  Anne Marie</name>
<title>First Course in Database Systems, A</title>
</borrower>
<borrower>
<name> John Doe  Mary Jane  Bill Jones  Anne Marie</name>
<title>A Complete Guide to DB2 Universal Database</title>
</borrower>

So first thing that is wrong is that it is returning all the names of people who have borrowed a book instead of one name per tag. Second, it should return 8 books and its only returning 7.

Can anyone please help me understand what is wrong with my xQuery????


I'm pretty sure you're trying to get a list of each borrower with the titles of the books they have borrowed. The problem with your XQuery is that you are iterating over each /library/items/book instead of each borrower. Also, there are only 7 /library/items/book in your example; not 8.

This XQuery should do what you want.

XQuery

<borrowers>
{
let $library := doc('library.xml')

for $borrower in $library/library/borrowers/borrower
  let $name := $borrower/name
  let $asins := data($borrower/borrowed/book/@asin)
  let $titles := 
    for $asin in $asins
      return $library/library/items/book[@asin = $asin]/title
  return
<borrower>
{$name}
{$titles}
</borrower>
}
</borrowers>

Results

<borrowers>
   <borrower>
      <name> John Doe </name>
      <title>First Course in Database Systems, A</title>
      <title>Database Driven Web Sites</title>
   </borrower>
   <borrower>
      <name> Mary Jane </name>
      <title>Compilers</title>
      <title>Database Driven Web Sites</title>
   </borrower>
   <borrower>
      <name> Bill Jones </name>
   </borrower>
   <borrower>
      <name> Anne Marie</name>
      <title>First Course in Database Systems, A</title>
      <title>Compilers</title>
      <title>Database Driven Web Sites</title>
      <title>A Complete Guide to DB2 Universal Database</title>
   </borrower>
</borrowers>


I have no experience with XQuery, but as far as I can see, your predicate [@asin = $borrowed//book/@asin] should be moved into the let statement, otherwise there is no connection, no link between $book and $borrowed at all. And since you already have a specific book in $book, there is no need for the predicate when returning the book title.

Frankly, I would probably take another approach: instead of looping over the books, why don't you loop over the borrowers? After all, you "need to return everyone that borrowed a book, their name and the title of the book"…

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜