TSQL: كيف أفعل الذاتي الانضمام إلى XML للحصول على وثيقة المتداخلة؟

StackOverflow https://stackoverflow.com/questions/160374

سؤال

ولدي جدول ملقم 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')
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top