全部,
提前为这个模棱两可的标题道歉。
这就是我想做的。。。
我正在开发一个需要查询数据库以获取项目列表的应用程序。该项列表将被格式化为XML文档,并返回到查询前端。
为了简化,假设这些项目是书。每本书都有以下属性:ISBN、书名、作者、价格。每本书也有0到n个评论
我希望返回的XML如下所示:
<books>
<book isbn='xxxxxx' title='abcde' author='xzy' price='99.99'>
<review>blah, blah, blah</review>
</book>
<book isbn='xxxxxx' title='abcde' author='xzy' price='99.99'>
<review>blah, blah, blah</review>
<review>blah, blah, blah</review>
<review>blah, blah, blah</review>
</book>
<book isbn='xxxxxx' title='abcde' author='xzy' price='99.99' />
</books>
如你所见,第一本书有一篇评论,第二本有三篇,第三本没有。
例如,我可以得到如下书籍列表:
Select isbn, title, author, price from book_info where title like "%learn to%"
通过遍历结果集,我可以构建XML文档。但是我怎样才能得到评论呢?
select review from book_review where book_review.isbn = [the current isbn]
通过迭代这个“sub”结果集,我可以将子“review”节点添加到当前book节点。
问题是,如果初始结果集中有100本书,我必须运行100个SQL命令来查找所有的评论。
-
选择与一个查询匹配的所有书籍
-
构建XML文档
-
对“book\u reviews”执行一个查询,以检索步骤1中所有书籍的所有评论(例如,“select review from book\u reviews where isbn in([isbn列表])”)
-
这意味着只需要两个SQL查询,但要搜索XML文档。
最终,这两个似乎都有点不雅。既然这似乎是一个常见的问题,我希望有一个很好的,优雅的解决方案。
值得一提的是,我使用sqlserver和PHP执行查询并组装XML文档。
非常感谢您的指导和洞察。
干杯,
马特