powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите пожалуйсто с выводом в XML
4 сообщений из 4, страница 1 из 1
Помогите пожалуйсто с выводом в XML
    #32042290
DMITRY POLSTIANKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день

есть таблица test

Column1 Column2 Column3
-------- -------- --------
a1 b1 c1
a1 b1 c2
a1 b2 c3

Как можно получить результат в виде XML

<Column1 name="a1">
<Column2 name="b1">
<Column3 name="c1"/>
<Column3 name="c2"/>
</Column2>
<Column2 name="b2"/>
<Column3 name="c1"/>
</Column2>
</Column1>

Таблица есть только одна
Мучаюсь вторую неделю :O)
...
Рейтинг: 0 / 0
Помогите пожалуйсто с выводом в XML
    #32042303
Dimos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте вариации на тему

select distinct T1.a,T2.b,T3.c from
((test T3 left outer join test T2 on T2.b=T3.b and T2.a=T3.a)
left outer join test T1 on T1.a=T2.a)
for xml auto

Для краткости Column1 обозван "a", Column2 - "b" Column3 - "c"

Дмитрий
...
Рейтинг: 0 / 0
Помогите пожалуйсто с выводом в XML
    #32042305
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не буду настаивать, что этот вариант оптимальный, но на первый взгляд у меня так получается
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
set nocount on
create table #t(column1 varchar( 10 ), column2 varchar( 10 ), column3 varchar( 10 ))

insert #t values('a1', 'b1', 'c1' )
insert #t values('a1', 'b1', 'c2' )
insert #t values('a1', 'b2', 'c3' )


SELECT  1             AS tag, 
       NULL         AS parent,
column1	as [column1! 1 !name],
NULL as [column2! 2 !name],
NULL as [column3! 3 !name]
from (select distinct column1 from #t) AS a
union all
select  2 , 1 , a.column1, b.column2, NULL
from (select distinct column1 from #t) AS a, (select distinct column1, column2 from #t) AS b
where a.column1 = b.column1
union all
select  3 , 2 ,a.column1, a.column2, b.column3
from (select distinct column1, column2 from #t) AS a, (select distinct column1, column2, column3 from #t) AS b
where a.column1 = b.column1 and a.column2 = b.column2
order by [column1! 1 !name], [column2! 2 !name], [column3! 3 !name]
for xml explicit

drop table #t
...
Рейтинг: 0 / 0
Помогите пожалуйсто с выводом в XML
    #32042306
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, Dimos безусловно предложил более правильный вариант
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
set nocount on
create table #t(column1 varchar( 10 ), column2 varchar( 10 ), column3 varchar( 10 ))

insert #t values('a1', 'b1', 'c1' )
insert #t values('a1', 'b1', 'c2' )
insert #t values('a1', 'b2', 'c3' )

select distinct column1.column1 as name, 
column2.column2 as name, column3.column3 as name
from 
((#t column3 left outer join #t column2 on column2.column2=column3.column2 and column2.column1=column3.column1) 
left outer join #t column1 on column1.column1=column2.column1) 
for xml auto

drop table #t
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите пожалуйсто с выводом в XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]