我的sql server数据库的xml输出有问题。我的表:
CREATE TABLE [dbo].[test_table](
[id] [int] IDENTITY(1,1) NOT NULL,
[firstname] [nvarchar](255) NULL,
[lastname] [nvarchar](255) NULL,
[city] [nvarchar](255) NULL,
[street] [nvarchar](255) NULL,
[streetno] [int] NULL
)
我想要输出,其中Address嵌套在每个Person中,如下所示:
<Root>
<Person id="1">
<firstname>Stefanie</firstname>
<lastname>Buckley</lastname>
<Address>
<city>Oklahoma</city>
<street> Cowley Road</street>
<streetno>34</streetno>
</Address>
</Person>
<Person id="2">
<firstname>Sandy</firstname>
<lastname>Mc Gee</lastname>
<Address>
<city>Montgomery</city>
<street> Hague Parkway</street>
<streetno>27</streetno>
</Address>
</Person>
</Root>
我尝试使用嵌套式选择:
select tbl1.id '@id', tbl1.firstname, tbl1.lastname,
(
select city,street,streetno from test_table as tbl2
where tbl2.id = tbl1.id
for xml path('Address')
)
from test_table as tbl1
for xml path('Person'), Root('Root')
但输出如下:
<Root>
<Person id="1">
<firstname>Stefanie</firstname>
<lastname>Buckley</lastname><Address><city>Oklahoma</city><street> Cowley Road</street><streetno>34</streetno></Address></Person>
<Person id="2">
<firstname>Sandy</firstname>
<lastname>Mc Gee</lastname><Address><city>Anchorage</city><street> North Green Clarendon Road</street><streetno>29</streetno></Address></Person>
<Person id="3">
我做错了什么?
答案 0 :(得分:10)
你忘记了, type
,而且你不需要从桌子上额外阅读。
select tbl1.id '@id'
, tbl1.firstname
, tbl1.lastname
, (
select city
, street
, streetno
for xml path('Address'), type
)
from test_table as tbl1
for xml path('Person'), type, Root('Root')