TSQL: كيف أفعل الذاتي الانضمام إلى XML للحصول على وثيقة المتداخلة؟
-
03-07-2019 - |
سؤال
ولدي جدول ملقم SQL 2005 كما يلي:
create table Taxonomy(
CategoryId integer primary key,
ParentCategoryId integer references Taxonomy(CategoryId),
CategoryDescription varchar(50)
)
ومع البيانات تبدو وكأنها
CategoryIdParentCategoryIdCategoryDescription
123nullfoo345123bar
I'd like to query it into an xml document like this:
<taxonomy>
<category categoryid="123" categorydescription="foo">
<category id="455" categorydescription="bar"/>
</category>
</taxonomy>
هل من الممكن القيام بذلك مع FOR XML AUTO، عناصر؟ أو هل أنا بحاجة إلى استخدام FOR XML صريحة؟
المحلول
ومن الممكن ولكن القيد الرئيسي هو أن مستويات التسلسل الهرمي يجب أن تكون مشفرة بشدة. لديه كتب SQL Server الفورية وصفا لكيفية تمثيل التسلسلات الهرمية في XML على هذا الرابط . وفيما يلي استعلام عينة التي تنتج XML التي طلبتها:
SELECT [CategoryId] as "@CategoryID"
,[CategoryDescription] as "@CategoryDescription"
,(SELECT [CategoryId]
,[CategoryDescription]
FROM [dbo].[Taxonomy] "Category"
WHERE ParentCategoryId = rootQuery.CategoryId
FOR XML AUTO, TYPE)
FROM [dbo].[Taxonomy] as rootQuery
where [ParentCategoryId] is null
FOR XML PATH('Category'), ROOT('Taxonomy')
لا تنتمي إلى StackOverflow