首页 > 解决方案 > 使用 XML PATH 在一个 XMLFILE 中的多个图像

问题描述

我有这样的查询:

SELECT a.test AS 'TRANSFERT/STUFF/NAME", b.URL AS "TRANSFERT/STUFF/IMAGE/URL"
FROM stuff a, image b
WHERE a.id = b.id
FOR XML PATH;

但是我可以为相同的东西制作几张图片。

我想要的是这样的xml:

<TRANSFERT>
<STUFF>CAR</STUFF>
<IMAGE>http://url1</IMAGE>
<IMAGE>http://url2</IMAGE>
<IMAGE>http://url3</IMAGE>
</TRANSFERT>

我怎样才能拥有这样的 xml 文件?

标签: sqlsql-server

解决方案


您需要使用带有 XML 的嵌套查询来实现您想要的结果,例如:

-- Database setup...
create table dbo.[stuff] (
  id int not null,
  test nvarchar(10)
);
insert dbo.[stuff] (id, test) values
    (1, N'CAR');

create table dbo.[image] (
  id int not null,
  [URL] nvarchar(20)
);
insert dbo.[image] (id, [URL]) values
    (1, N'http://url1'),
    (1, N'http://url2'),
    (1, N'http://url3');

-- XML query result...
select
    a.test as 'STUFF',
    (
        select [URL] as 'text()'
        from dbo.[image] b
        where b.id = a.id
        for xml path('IMAGE'), type
    )
from dbo.[stuff] a
for xml path('TRANSFERT');

这会产生结果......

<TRANSFERT>
  <STUFF>CAR</STUFF>
  <IMAGE>http://url1</IMAGE>
  <IMAGE>http://url2</IMAGE>
  <IMAGE>http://url3</IMAGE>
</TRANSFERT>

推荐阅读