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

Откуда: Moscow
Сообщений: 85
Добрый день!
Есть таблица с двумя полями, в который указаны ID документов и связанных с ними документов, как показано ниже.
SourceContentID RelatedSourceContentID
8576 21056
8576 33951
8576 34305
21056 8576
21056 33951
21056 34305
33951 8576
33951 21056
33951 34305
34305 8576
34305 21056
34305 33951
Т.е. есть документ А который ссылается на документ Б, в свою очередь Б ссылается на А.
Мне нужно выбрать только одну версию где А ссылается на Б либо Б ссылается на А.
Как?
30 мар 13, 23:58    [14117479]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно написать такой запрос?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
если в этой задаче перепутывание багом не считается, то просто
select distinct
case when SourceContentID < RelatedSourceContentID then SourceContentID else RelatedSourceContentID end,
case when SourceContentID > RelatedSourceContentID then SourceContentID else RelatedSourceContentID end
from ...
31 мар 13, 00:06    [14117519]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно написать такой запрос?  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
ну или так:)
with CTE as (select * from(values
   (8576,21056),(8576,33951),(8576,34305),(21056,8576),(21056,33951),(21056,34305),
   (33951,8576),(33951,21056),(33951,34305),(34305,8576),(34305,21056),(34305,33951)
   )t(SourceContentID,RelatedSourceContentID))
select * from CTE e
where not exists (
   select * 
   from CTE 
   where RelatedSourceContentID=e.SourceContentID 
     and SourceContentID=e.RelatedSourceContentID 
     and SourceContentID<RelatedSourceContentID
   )
31 мар 13, 00:12    [14117538]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно написать такой запрос?  [new]
Sergy
Member

Откуда: Moscow
Сообщений: 85
Спасибо, помогли :)
31 мар 13, 17:56    [14118780]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить