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

Откуда:
Сообщений: 23
Ребят,всем привет, у меня тут возник вопрос ,для решения которого у вас может и не составит труда , но вот я начал затуплять.

У меня есть хранимая процедура и суть заключается в том , что она может вызываться как с параметром так и без него. А теперь перейдем к вопросу , как сделать так что бы при запуске процедуры без параметров игнорировалась строка в запросе
HAVING c.surname = @surname
. А в противном случае была бы видна для программы
20 дек 16, 22:50    [20029707]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом :)  [new]
xenix
Guest
ba3uk,

Самое деревянное - написать в процедуре IF
IF(LTRIM(RTRIM(ISNULL(@surname,''))))<>''
 --запрос с HAVING c.surname = @surname
ELSE
 --запрос без HAVING c.surname = @surname
20 дек 16, 23:04    [20029736]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом :)  [new]
ba3uk
Member

Откуда:
Сообщений: 23
xenix,да , такой способ уже рассматривал, много кода дублируется ради добавления HAVING-a
20 дек 16, 23:05    [20029743]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом :)  [new]
xenix
Guest
автор
много кода дублируется ради добавления HAVING-a

Здесь тебе не ООП, с инкапсуляцией, наследованием и полиморфизмом, здесь руками кодить надо :-)
Ты бы лучше показал весь запрос, а то конструкция
HAVING c.surname = @surname

сама по себе вызывает сильные подозрения
20 дек 16, 23:15    [20029763]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом :)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31778
ba3uk
HAVING c.surname = @surname
Непонятен смысл использования HAVING без агрегатных функций.
20 дек 16, 23:31    [20029800]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом :)  [new]
aleks2
Guest
ba3uk
Ребят,всем привет, у меня тут возник вопрос ,для решения которого у вас может и не составит труда , но вот я начал затуплять.

У меня есть хранимая процедура и суть заключается в том , что она может вызываться как с параметром так и без него. А теперь перейдем к вопросу , как сделать так что бы при запуске процедуры без параметров игнорировалась строка в запросе
HAVING c.surname = @surname
. А в противном случае была бы видна для программы


HAVING @surname is null or c.surname = @surname
21 дек 16, 06:04    [20030021]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом :)  [new]
ba3uk
Member

Откуда:
Сообщений: 23
aleks2,Спасибо, очень помогло
21 дек 16, 06:37    [20030037]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом :)  [new]
o-o
Guest
alexeyvg
ba3uk
HAVING c.surname = @surname
Непонятен смысл использования HAVING без агрегатных функций.

Это говорит о том, что запрос накликан в аксессе,
и что там нужен distinct.
В результате абсолютно все вынесено в group by, а вместо where там having
21 дек 16, 08:00    [20030077]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом :)  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
alexeyvg
ba3uk
HAVING c.surname = @surname

Непонятен смысл использования HAVING без агрегатных функций.
Как написано в документации такое условие всё равно перемещается в WHERE
21 дек 16, 11:01    [20030847]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом :)  [new]
ba3uk
Member

Откуда:
Сообщений: 23
iap, осознал это уже , теперь стало интересно , считается ли такой запрос агрегатной функцией ?
HAVING @price is null or SUM(d.price + w.price) < @price
21 дек 16, 23:57    [20034610]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить