Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите составить простой запрос, возвращающий xml  [new]
uaggster
Member

Откуда:
Сообщений: 867
Коллеги, помогите составить запрос!
Имеется вот такая таблица:
Declare @t table (id int identity(1,1) primary key,
val1 int,
val1_desc nvarchar(100),
val2 int,
val2_desc nvarchar(100),
val3 int,
val3_desc nvarchar(100))

Insert into @t (val1, val1_desc, val2, val2_desc, val3, val3_desc)
values (1, 'один', 1, 'one', 1, 'eins'),
(2, 'два', 2, 'two', 2, 'zwei')


Хочется получить на выходе вот такой xml:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<val1 desc="один">1</val1>
<val2 desc="one">1</val2>
<val3 desc="eins">1</val3>
</root>
<root>
<val1 desc="два">2</val1>
<val2 desc="two">2</val2>
<val3 desc="zwei">2</val3>
</root>


Помогите! Я так понимаю, что пилить нужно через ELEMENTS, но я никак не могу разобраться!
4 фев 15, 15:40    [17217875]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить простой запрос, возвращающий xml  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
?
select
val1_desc as [val1/@desc]
, val1
, val2_desc as [val2/@desc]
, val2
, val3_desc as [val3/@desc]
, val3
from @t
for xml path('root')
4 фев 15, 16:10    [17218141]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить простой запрос, возвращающий xml  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7870
XML то неправильный.
4 фев 15, 16:12    [17218163]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить простой запрос, возвращающий xml  [new]
uaggster
Member

Откуда:
Сообщений: 867
daw,
Да, спасибо!

Не знал , что так можно.


Владислав Колосов, а почему неправильный?
4 фев 15, 16:15    [17218180]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить простой запрос, возвращающий xml  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7870
uaggster, нет корневого тэга.
4 фев 15, 16:16    [17218189]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить простой запрос, возвращающий xml  [new]
uaggster
Member

Откуда:
Сообщений: 867
Владислав Колосов,

А, это в данном случае значения не имеет.
Просто я не знал, как добавить к элементу, содержащему значения, еще и какие-нибудь атрибуты, и не знал, как это спросить.
Максимум, что удалось родить это
Select  
(Select
 val1_desc '@desc', val1 
 for xml path('val1'), type)
,(Select
 val2_desc '@desc', val2 
 for xml path('val2'), type)
,(Select
 val2_desc '@desc', val3
 for xml path('val3'), type)
 from @t
For xml path ('root')


А оно возвращает
<root>
  <val1 desc="один">
    <val1>1</val1>
  </val1>
  <val2 desc="one">
    <val2>1</val2>
  </val2>
  <val3 desc="one">
    <val3>1</val3>
  </val3>
</root>
<root>
  <val1 desc="два">
    <val1>2</val1>
  </val1>
  <val2 desc="two">
    <val2>2</val2>
  </val2>
  <val3 desc="two">
    <val3>2</val3>
  </val3>
</root>


А курение MSDN - не помогло, хотя курил я правильную статью:
https://msdn.microsoft.com/ru-ru/library/bb522647(v=sql.110).aspx

... Бывает. daw, еще раз спасибо!
4 фев 15, 16:25    [17218264]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить