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

Откуда:
Сообщений: 4
Всем привет!

Сейчас у нас есть определенный прайс-лист и нужно в нем добавить дополнительное поля, в котором будет отображаться фамилия менеджера, который поставил эту позицию в бронь (2 определенных статуса - устная бронь и бронь с задатком).

select t.Description as Описание, epv1.extparamvalue as Корпус, epv2.extparamvalue as Этаж, epv3.extparamvalue as Количество_комнат, 
epv8.extparamvalue as Квартира, s.Description as Статус, epv4.extparamvalue as Площадь, 
epv5.extparamvalue as Цена_за_м2, epv6.extparamvalue as Итоговая_стоимость from Tasks as t

left join ExtParamValues as epv1 on t.TaskID=epv1.TaskID
left join ExtParamValues as epv2 on t.TaskID=epv2.TaskID
left join ExtParamValues as epv3 on t.TaskID=epv3.TaskID
left join ExtParamValues as epv4 on t.TaskID=epv4.TaskID
left join ExtParamValues as epv5 on t.TaskID=epv5.TaskID
left join ExtParamValues as epv6 on t.TaskID=epv6.TaskID
left join ExtParamValues as epv7 on t.TaskID=epv7.TaskID
left join ExtParamValues as epv8 on t.TaskID=epv8.TaskID
left join States as s on t.StateID=s.StateID

where 

t.SubcatID=12 and
epv1.extparamid = 55 and epv1.extparamvalue = 1 and
epv2.extparamid = 54 and
epv3.extparamid = 63 and
epv4.extparamid = 45 and
epv5.extparamid = 226 and
epv6.extparamid = 42 and 
epv7.extparamid = 60 and epv7.SelectedTaskId = 9 and
epv8.ExtParamID = 203


Статусы, при которых должна отображаться фамилия - ID = 32,33
Статус объекта меняется, когда создается бронь в другом разделе (ID=13). Фамилия менеджера, которая должна отображаться = фамилия создавшего бронь в этом разделе.


Версия: Microsoft SQL Server 2014 - 12.0.2370.0 (X64)
11 дек 14, 00:28    [16980886]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на отображение информации при определенных условиях  [new]
Merdoc
Member

Откуда: Новосибирск
Сообщений: 103
ReMmIk,
Попробуйте обычный вариант с
case when s.StateID in (32,33) then [то, откуда вы тащите фамилию] end as manager
11 дек 14, 06:39    [16981176]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на отображение информации при определенных условиях  [new]
Wlr-l
Member

Откуда:
Сообщений: 606
ReMmIk,

1.В запросе
...
left join ExtParamValues as epv1 on t.TaskID=epv1.TaskID
left join ExtParamValues as epv2 on t.TaskID=epv2.TaskID
...
where
epv1.extparamid = 55 and epv1.extparamvalue = 1 and
epv2.extparamid = 54 and
...

left join превращается в inner join.

Поэтому нужно писать так:
...
left join ExtParamValues as epv1 on t.TaskID=epv1.TaskID and epv1.extparamid = 55 and epv1.extparamvalue = 1
left join ExtParamValues as epv2 on t.TaskID=epv2.TaskID and epv2.extparamid = 54
...

2.Посмотрите тему, которая сейчас обсуждается, Помтгите оптимизировать запросоптимизировать запрос? там есть вариант упрощения вашего запроса.
11 дек 14, 10:35    [16981860]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на отображение информации при определенных условиях  [new]
ReMmIk
Member

Откуда:
Сообщений: 4
Merdoc, немного изначально неправильно задачу объяснил. У нас условно есть объект. Его создавал admin. Но создается сделка, где участвует данный объект (и факт ее создания меняет статус у объекта) и вот фамилию того, кто создал сделку и нужно отображать.
11 дек 14, 17:28    [16984855]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить