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

Откуда:
Сообщений: 305
Доброе утро! (день, вечер) :)
Есть сложный запрос на создание временной таблицы.
В нем нужно добавить несколько условий в where, если параметр равен 1. Если 0 - не добавлять.
Как это можно сделать?
5 июл 17, 08:19    [20614316]     Ответить | Цитировать Сообщить модератору
 Re: Добавить условия в запрос в завимости от параметра  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
st90
Доброе утро! (день, вечер) :)
Есть сложный запрос на создание временной таблицы.
В нем нужно добавить несколько условий в where, если параметр равен 1. Если 0 - не добавлять.
Как это можно сделать?
Например, поставить условие:
and (параметр <> 1 or несколько условий)
Или сделать в виде union
Или сделать обычный if, и разделить на 2 запроса.
5 июл 17, 08:52    [20614375]     Ответить | Цитировать Сообщить модератору
 Re: Добавить условия в запрос в завимости от параметра  [new]
st90
Member

Откуда:
Сообщений: 305
alexeyvg, спасибо!
Догадался сам, но не так. Почему or?

Сделал пока так
...
and
((@Param=1 and Field='111' and Field=222) or (@Param=0))

но не уверен что правильно, вроде работает
5 июл 17, 09:00    [20614399]     Ответить | Цитировать Сообщить модератору
 Re: Добавить условия в запрос в завимости от параметра  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
st90
Сделал пока так
... Field='111' and Field=222 ...

но не уверен что правильно, вроде работает

Оффтопик, и кто вас учил так условия ставить?
У вас поле Field какого типа? Вот такого же типа должны быть и значения сравнения.
5 июл 17, 10:23    [20614672]     Ответить | Цитировать Сообщить модератору
 Re: Добавить условия в запрос в завимости от параметра  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Руслан Дамирович
st90
Сделал пока так
... Field='111' and Field=222 ...

но не уверен что правильно, вроде работает

Оффтопик, и кто вас учил так условия ставить?
У вас поле Field какого типа? Вот такого же типа должны быть и значения сравнения.

а вы наверное всерьёз думаете что условие Field='111' and Field=222 может быть в какой-то вселенной true?
5 июл 17, 10:28    [20614691]     Ответить | Цитировать Сообщить модератору
 Re: Добавить условия в запрос в завимости от параметра  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
TaPaK
а вы наверное всерьёз думаете что условие Field='111' and Field=222 может быть в какой-то вселенной true?

А это уже другой вопрос, главное, что автор сего опуса
sp90
но не уверен что правильно, вроде работает
5 июл 17, 10:32    [20614712]     Ответить | Цитировать Сообщить модератору
 Re: Добавить условия в запрос в завимости от параметра  [new]
st90
Member

Откуда:
Сообщений: 305
Руслан Дамирович,
Ну это опечатка, читать так:

... Field1='111' and Field2=222 ...


Это набивалось прямо тут в окне сообщения :)
5 июл 17, 10:59    [20614813]     Ответить | Цитировать Сообщить модератору
 Re: Добавить условия в запрос в завимости от параметра  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
st90
Руслан Дамирович,
Ну это опечатка, читать так:
... Field1='111' and Field2=222 ...

Это набивалось прямо тут в окне сообщения :)

Я так и понял. Но уже после своего поста. Утро же. Без кофе мерещится всякое.

У вас таких параметров много?
Если только один, то лучше IF ELSE, если больше - прочитайте про PARAMETER SNIFFING и как с этим бороться.
5 июл 17, 11:02    [20614822]     Ответить | Цитировать Сообщить модератору
 Re: Добавить условия в запрос в завимости от параметра  [new]
Владислав Колосов
Member

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

не пишите "универсальных" запросов и процедур с "универсальными" параметрами!
Напишите отдельные запросы для каждого набора параметров, напишите процедуру - диспетчер, оптимизируйте каждый запрос отдельно. Иначе получите запрос, который может всё, но может плохо.
5 июл 17, 11:48    [20615052]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить