首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >左连接FOR XML AUTO,ELEMENTS

左连接FOR XML AUTO,ELEMENTS
EN

Stack Overflow用户
提问于 2012-01-10 03:13:20
回答 2查看 3.8K关注 0票数 2

我有三张桌子

代码语言:javascript
运行
复制
Master {MasterID, Desc},
Detail {MasterID, DetailID, ItemID},
Items  {ItemID, ItemDesc})

我要选择主要信息、详细信息(作为主要信息中的SubElement )、项目(在相同的详细信息元素中)

代码语言:javascript
运行
复制
SELECT Master.MasterID, Master.Desc, Detail.DetailID, Detail.ItemID, Items.ItemDesc
FROM Master
    LEFT JOIN Detail 
        LEFT JOIN Items 
            ON Detail.ItemID = Items.ItemID 
    ON Master.MasterID = Detail.MasterID
FOR XML AUTO, ELEMENTS

它给出的结果如下:

代码语言:javascript
运行
复制
<Master>
 <MasterID>1</MasterID>
 <Desc>Master1</Desc>
 <Detail>
  <DetailID>1</DetailID>
  <ItemID>1</ItemID>
  <Items><ItemDesc>ItemDesc1</ItemDesc></Items>
 </Detail>
</Master>

但我的目标是

代码语言:javascript
运行
复制
<Master>
 <MasterID>1</MasterID>
 <Desc>Master1</Desc>
 <Detail>
  <DetailID>1</DetailID>
  <ItemID>1</ItemID>
  <ItemDesc>ItemDesc1</ItemDesc>
 </Detail>
</Master>'

我怎样才能用最佳实践方式做到这一点呢?

EN

回答 2

Stack Overflow用户

发布于 2012-01-10 03:46:00

使详细信息和商品描述从单个查询返回,如下所示:

代码语言:javascript
运行
复制
SELECT 
    Master.MasterID, 
    Master.Desc, 
    Detail.DetailID, 
    Detail.ItemID, 
    Detail.ItemDesc 
FROM 
    Master 
    LEFT JOIN (
        select
            d.MasterID,
            d.DetailID,
            d.ItemID,
            i.ItemDesc
        from
            Detail d
            left join items i on
                d.itemid = i.itemid
    ) Detail ON
        Master.MasterID = Detail.MasterID
FOR XML AUTO, ELEMENTS
票数 3
EN

Stack Overflow用户

发布于 2012-01-10 05:45:43

您可以像这样使用for xml path

代码语言:javascript
运行
复制
select m.MasterID,
       m.[Desc],
       (select d.DetailID,
               d.ItemID,
               i.ItemDesc
        from Detail as d
          inner join Items as i
            on d.ItemID = i.ItemID
        where d.MasterID = m.MasterID
        for xml path('Detail'), type)
from Master as m
for xml path('Master')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8793813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档