У меня есть таблица, как это (упрощенный):генерировать структурированный (XML) документ из иерархических данных таблицы (T-SQL)
ID | Name | Parent
---------------------------------
1 | IND | NULL
2 | INS | 5
3 | CON | NULL
4 | AUT | 1
5 | FIN | NULL
6 | PHA | 1
7 | CFIN | 5
8 | CMRKT | 7
DDL:
CREATE TABLE [dbo].[tblIndustryCodes](
[IdIndustry] [int] IDENTITY(1,1) NOT NULL,
[IndustryCode] [nvarchar](5) NULL,
[IndustryName] [nvarchar](50) NULL,
[ParentId] [int] NULL,
CONSTRAINT [PK_tblIndustryCodes] PRIMARY KEY CLUSTERED ( [IdIndustry] ASC))
Вставки:
INSERT INTO [tblIndustryCodes]
([IndustryCode]
,[IndustryName]
,[ParentId])
VALUES
('IND','Industry',NULL),
('PHARM','Pharmacy',1),
('FIN','Finance',NULL),
('CFIN','Corporate Finance',3),
('CMRKT','Capital Markets',4)
И я хотел бы сгенерировать из него xml-файл, который структурирован в соответствии с родительскими идентификаторами
как это (упрощенный)
<IND>
<AUT>
<PHA>
<CON>
<FIN>
<CFIN>
<CMRKT>
Я считаю, что его сделал, может быть, с какой-то любопытной рекурсией или что-то в этом роде, но я не знаю, как. Любая помощь очень ценится!
редактировать: Сво SQL Server Express 2008
Я действительно не волнует, если это действительный XML или нет, потому что я только использовать его для заполнения элемента управления TreeView.
edit2: Я бы, вероятно, использовал «FOR XML EXPLICIT», но я не очень понимаю синтаксис, когда нет фиксированной максимальной глубины дерева.
Edit3: для облегчения понимания задачи, я добавил DDL для таблицы
Вы хотите, чтобы это выглядело как ваш пример вывода или как настоящий xml? также, какая версия базы данных? –
Я отредактировал оригинал сообщения, спасибо. –
ужасно похож на этот вопрос, который был задан совсем недавно: http://stackoverflow.com/questions/2408459/t-sql-question-query-to-xml –