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

Откуда: Moldova
Сообщений: 40
Привет

Есть такая таблица Table1:
Id Name Table2Id
1 aaa 5
2 hello NULL

И таблица Table2:
Id Name
5 bbb

Можно как-то составить запрос, чтобы если Table2Id содержит NULL, то бралось значение из Table1.Name а если не NULL то из Table2.Name. Если есть несколько способов это сделать - будет просто супер, так как мне это встраивать в уже существующий большой запрос.

Спасибо.
4 сен 14, 11:59    [16533995]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
И что у вас не получилось ?
4 сен 14, 12:01    [16534004]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
iap
Member

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

Table2.Id IS NULL ??? Очень мило! И как же узнать, какое Table1.Name брать?
4 сен 14, 12:07    [16534049]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
случайно заглянул
Guest
iap
Smekalisty,

Table2.Id IS NULL ??? Очень мило! И как же узнать, какое Table1.Name брать?

Не Table2.Id, а Table2Id, другими словами Table1.Table2Id :)
исходя из данного примера, надо взять то Table1.Name, у которого Table1.Id = 2.
4 сен 14, 12:14    [16534101]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
aleks2
Guest
select t1.id, isnull(t2.Name, t1.Name) as Name, t1.Table2Id
from [Table1] t1 left outer join [Table2] t2 t1.Table2Id = t2.ID
4 сен 14, 12:17    [16534115]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
Smekalisty
Member

Откуда: Moldova
Сообщений: 40
Glory,

У меня не получилось сделать проверку на NULL чтобы выбрать значения из второй таблицы, вот кусочек этого запроса, я поставил второй LEFT OUTER JOIN, в него поставил нужную мне проверку IsDeleted и дальше пытаюсь впихнуть условие IS NULL и выборку из Table2
// .......
t1
AS
(
SELECT

[r].[Id]
,[r].[Name]
,[r].[Column1]
,[r].[Columns2]
,[d_0].[Column3] AS [Parameter1]
,[d_0].[Id] AS [SysId]
FROM
Table1 r
LEFT OUTER JOIN ..................
LEFT OUTER JOIN Table2 tb2 ON tb2.Id = r.Table2Id AND tb2 .IsDeleted = 0 AND ...
4 сен 14, 12:21    [16534136]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
iap
Member

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

Алекса игнорируете что ли?
4 сен 14, 12:36    [16534269]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
Smekalisty
Member

Откуда: Moldova
Сообщений: 40
iap,

Нет почему же, пытаюсь адаптировать подсказанную им isnull к моему запросу
4 сен 14, 12:42    [16534325]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
Smekalisty
Member

Откуда: Moldova
Сообщений: 40
Не получается у меня с примером Алексея, isnull() по колонке t2.Name не содержит null, поэтому значение из второй таблицы не берется.
Я пытался в isnull подставлять Table2Id, и делать select - но фигня какоя-то получается:

isnull(t1.Table2Id, (SELECT top 1 t2.Name FROM Table2 WHERE t2.Id = t1.Table2Id)) as Name,

Помите плиз
4 сен 14, 13:26    [16534671]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
case when t1.Table2Id is null then t1.Name else t2.Name end
4 сен 14, 13:34    [16534748]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
случайно заглянул
Guest
Smekalisty
isnull() по колонке t2.Name не содержит null

значит Table2Id не null
4 сен 14, 13:39    [16534799]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
Smekalisty
Member

Откуда: Moldova
Сообщений: 40
Glory,

Спасибо, прям то, что бабушка прописала!
4 сен 14, 13:53    [16534907]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить