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

Откуда: Новосибирск
Сообщений: 108
Есть 2 таблицы:
Первая: idЧеловека, дом, офис (человеку соответствует только одни адрес)
Вторая: НомерТелефона ,дом, офис, idЧеловека
Телефоны бывают 2 типов: превязанные к человеку и не привязаные( idЧеловека null и не null)


Нужно выбрать для каждого человека телефон:
Если есть явная привязка idЧеловека, то взять только его, если нет телефона с idЧеловека, то выбрать любой непривязанный в этой комнате, если нет такого то первый попавшийся в этой комнате с заполненым idЧеловека, а остальные отсеять.

Примеры:
П1:
Таблица1: idЧеловека, дом, офис
1, 300, 201
2, 300, 201
14, 300 , 201
Таблица 2: НомерТелефона ,дом, офис, idЧеловека
2-22-22-22 300 201 1
2-33-23-22 300 201 6
2-43-34-34 300 201 2
2-17-17-17 300 201 7
2-22-22-55 300 201 null
Результат: 2-22-22-22, 1
2-43-34-34, 2
2-22-22-55, 14
П2:
Таблица1: idЧеловека, дом, офис
1, 300, 201
14, 300 , 201
Таблица 2: НомерТелефона ,дом, офис, idЧеловека
2-22-22-22 300 201 1
2-33-23-22 300 201 6
2-43-34-34 300 201 2
2-17-17-17 300 201 7

Результат: 2-22-22-22, 1
2-22-22-22, 14
19 авг 14, 07:39    [16460039]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
aleks2
Guest
Что-то совсем измельчал Новосибирск...
select t1.*, coalesce( p1.НомерТелефона, p2.НомерТелефона, p3.НомерТелефона ) as НомерТелефона
 from [Таблица1] t1
   outer apply ( select top(1) * from [Таблица2] t2 where t2.idЧеловека =  t1.idЧеловека ) p1
   outer apply ( select top(1) * from [Таблица2] t2 where t2.idЧеловека is null and t2.дом = t1.дом and t2.офис = t1.офис  ) p2
   outer apply ( select top(1) * from [Таблица2] t2 where t2.дом = t1.дом and t2.офис = t1.офис  ) p3
19 авг 14, 07:54    [16460064]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Soldat104
Member

Откуда: Новосибирск
Сообщений: 108
Спасибо! я C# разработчик, SQL побочный :)
19 авг 14, 07:57    [16460069]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить