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

Откуда: Саратов
Сообщений: 46
MSSQL SERVER 2005
В общем есть две таблицы a и b
У a примерно такая структура: Id, Name
У b: Id, Name, Links
поле Links тип xml, структура примерно такая:
<Value>
<SubValues>
<SubValue Id='1' />
<SubValue Id='2' />
<SubValues>
</Value>
В этом поле Links в SubValue Id=... хранятся ссылки на поле Id из таблицы а

Как мне запросом выбрать из таблицы а только те строки, на которые есть ссылки в поле Links таблицы b.
Заранее спасибо, никак не соображу !
14 сен 09, 13:00    [7654847]     Ответить | Цитировать Сообщить модератору
 Re: Что никак не осилю этот xml  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2549
joric,

весьма оригинальный у Вас способ связи 2-х таблиц
14 сен 09, 13:08    [7654903]     Ответить | Цитировать Сообщить модератору
 Re: Что никак не осилю этот xml  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
declare @a table(id int, name varchar(20))
insert into @a (id, name)
select 1, 'n1' union all
select 5, 'n5'

declare @b table(id int, name varchar(20), links xml)
insert into @b(id, name, links)
select 10, 'n10', '<Value><SubValues><SubValue Id="1"/><SubValue Id="2"/></SubValues></Value>' union all
select 20, 'n20', '<Value><SubValues><SubValue Id="7"/><SubValue Id="9"/></SubValues></Value>'

select *
  from @a
 where id in (select t.id
                from @b
               cross apply (select x.value('@Id[1]', 'int') as id
                              from links.nodes('/Value/SubValues/SubValue') as t(x)
                            ) as t
              )

id          name
----------- --------------------
1           n1

(1 row(s) affected)
14 сен 09, 13:14    [7654946]     Ответить | Цитировать Сообщить модератору
 Re: Что никак не осилю этот xml  [new]
joric
Member

Откуда: Саратов
Сообщений: 46
PaulYoung,

а Вы считаете так хуже чем через промежуточную таблицу ?
14 сен 09, 13:32    [7655088]     Ответить | Цитировать Сообщить модератору
 Re: Что никак не осилю этот xml  [new]
joric
Member

Откуда: Саратов
Сообщений: 46
Паганель,

спасибо огромное, сейчас попробую
14 сен 09, 13:34    [7655110]     Ответить | Цитировать Сообщить модератору
 Re: Что никак не осилю этот xml  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Я привел решение для случая, если структуру БД никак поменять нельзя
Если можно - меняйте, потому что PaulYoung прав
14 сен 09, 13:35    [7655127]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить