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

Откуда: Киев
Сообщений: 438
Приветствую!

Не получается составить запрос с использованием данных XML-поля. Буду упрощать исходные данные, для простоты понимания.

Имеется одна таблица A с полями:
filID int,
data xml


В поле data хранятся различные данные следующей структуры (для каждой строки таблицы А количество строк service может быть различным (до 100), строки не дублируются, но значения поля dbName часто совпадают):
<SBConfig filID="51">
  <Services>
    <service filID="51" dbName="Base1" Type="//BigTest" />
    <service filID="51" dbName="Base2" Type="//Check" />
  </Services>
</SBConfig>


Нужно выбрать в новую таблицу данные dbName для всех строк service, в которых Type = "//BigTest", причем данные должны быть собраны со всех строк таблицы A.

Вот такая хитрая задачка... Если смогу решить раньше, чем мне сможете помочь - отпишусь сам как сделал.
Заранее благодарен, если сможете помочь.

З.Ы.: была мысль сделать с помощью курсора и временной накопительной таблицы, но как-то уж слишком коряво это будет выглядеть, имхо.
6 июн 12, 16:28    [12676228]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый запрос с использованием данных XML-поля  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
И что тут хитрого?
select t.c.value('./@dbName', 'sysname')
from dbo.A a
	cross apply a.data.nodes('/SBConfig/Services/service[@Type="//BigTest"]') t(c);
6 июн 12, 18:01    [12677104]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый запрос с использованием данных XML-поля  [new]
Leax
Member

Откуда: Киев
Сообщений: 438
спасибо, завтра проверю - сегодня уже сложно )
6 июн 12, 18:59    [12677537]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый запрос с использованием данных XML-поля  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Хранить в XML поле статичные плоские реляционные данные в реляционной же БД эпично.
7 июн 12, 09:45    [12679459]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый запрос с использованием данных XML-поля  [new]
Leax
Member

Откуда: Киев
Сообщений: 438
Ennor Tiegael
Большое спасибо, получилось! Раньше никогда не использовал cross apply

Mnior
Согласен, но так уж было реализовано кем-то и когда-то )
7 июн 12, 11:16    [12680289]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить