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

Откуда:
Сообщений: 204
Доброй ночи! Вопрос простой, вызываю ХП с булевым параметром в условии, нужно выбрать все строки со значением ItemsCount > 0, что-то не соображу, как это сделать:

@IsAvailable bit
Select * FROM Items WHERE ItemsCount – и вот тут, как дальше?
22 июл 13, 01:05    [14596739]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Torre
WHERE ItemsCount – и вот тут, как дальше?
WHERE ItemsCount > 0
22 июл 13, 08:32    [14596975]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Телепатирую.
SELECT * FROM Items WHERE @IsAvailable = 'FALSE' OR ItemsCount > 0

Это если @IsAvailable не допускает значения NULL, а только TRUE или FALSE.
Если @IsAvailable может быть NULL, то определитесь, какое поведение вам нужно в таком случае.
22 июл 13, 11:13    [14597693]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Torre
Member

Откуда:
Сообщений: 204
Гость333, спасибо, красивый хак, пожалуй воспользуюсь им:
SELECT * FROM Items WHERE @IsAvailable = 0 OR ItemsCount > 0
22 июл 13, 19:55    [14600867]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Bator
Member

Откуда: Порт пяти морей
Сообщений: 439
Torre, как вариант

SELECT * FROM Items WHERE ItemsCount >= @IsAvailable
22 июл 13, 23:10    [14601477]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Torre
Member

Откуда:
Сообщений: 204
Спасибо всем за ответы.
Теперь ситуация изменилась, нужно получить
 SELECT * FROM Items WHERE GroupId = @GroupId

Но если
@GroupId = 0
тогда нужно выбрать все группы

Подскажите пожалуйста красивый прием, работа горит. Спасибо.
6 авг 13, 14:33    [14669710]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
Torre, а чем этот вопрос отличается от предыдущего?
6 авг 13, 14:38    [14669739]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Glory
Member

Откуда:
Сообщений: 104760
Torre
Подскажите пожалуйста красивый прием, работа горит. Спасибо.

Перечитать свое же сообщение
https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1036418&msg=14600867
6 авг 13, 14:39    [14669746]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Torre
Member

Откуда:
Сообщений: 204
Shakill, прости, давит время, не могу сообразить как приладить
6 авг 13, 14:40    [14669748]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Torre
Member

Откуда:
Сообщений: 204
Glory, когда например @GroupId = 3 выводит все группы
6 авг 13, 14:43    [14669778]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Glory
Member

Откуда:
Сообщений: 104760
Torre
Glory, когда например @GroupId = 3 выводит все группы

Интересно, а как сравние с 3 может выводить другие значения ?
6 авг 13, 14:45    [14669793]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Glory
Member

Откуда:
Сообщений: 104760
Torre
давит время, не могу сообразить как приладить

Наймите еще кого-нибудь. Кто будет делать вашу работу.
6 авг 13, 14:46    [14669797]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Torre
Member

Откуда:
Сообщений: 204
Нужно выводить дату по группам, но в некоторых случаях нужно вывести все группы, у меня есть только @GroupId, int
Можно передать NULL
6 авг 13, 14:48    [14669815]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Glory
Member

Откуда:
Сообщений: 104760
Torre
Нужно выводить дату по группам, но в некоторых случаях нужно вывести все группы, у меня есть только @GroupId, int
Можно передать NULL

Используйте OR - что непонятного ?
6 авг 13, 14:49    [14669821]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Torre
Member

Откуда:
Сообщений: 204
Glory
Torre
Нужно выводить дату по группам, но в некоторых случаях нужно вывести все группы, у меня есть только @GroupId, int
Можно передать NULL

Используйте OR - что непонятного ?
Спасибо, Glory, дошло, сделал так:
SELECT * FROM Items WHERE GroupId = @GroupId OR @GroupId IS NULL
6 авг 13, 14:52    [14669836]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Torre
Спасибо всем за ответы.
Теперь ситуация изменилась, нужно получить
 SELECT * FROM Items WHERE GroupId = @GroupId

Но если
@GroupId = 0
тогда нужно выбрать все группы

Подскажите пожалуйста красивый прием, работа горит. Спасибо.


работа.. да уж...
6 авг 13, 14:53    [14669845]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Torre
Member

Откуда:
Сообщений: 204
И ты, Winnipuh...
6 авг 13, 15:00    [14669884]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
SELECT * FROM Items WHERE GroupId = ALL(SELECT @GroupId WHERE @GroupId<>0);
???
6 авг 13, 15:06    [14669927]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3618
Torre
Glory
пропущено...

Используйте OR - что непонятного ?
Спасибо, Glory, дошло, сделал так:
SELECT * FROM Items WHERE GroupId = @GroupId OR @GroupId IS NULL


В процедуре я бы сделал без or. Оптимизатору полегше будет.
if @GroupId is not null
  SELECT * FROM Items WHERE GroupId = @GroupId
else 
  SELECT * FROM Items
6 авг 13, 15:07    [14669936]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Torre
Но если
@GroupId = 0
тогда нужно выбрать все группы


Torre
сделал так:
SELECT * FROM Items WHERE GroupId = @GroupId OR @GroupId IS NULL

Что-то не стыкуется требуемое условие с реализацией :-)
6 авг 13, 15:07    [14669938]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Гость333
Torre
Но если
@GroupId = 0

тогда нужно выбрать все группы


Torre
сделал так:
SELECT * FROM Items WHERE GroupId = @GroupId OR @GroupId IS NULL


Что-то не стыкуется требуемое условие с реализацией :-)
Что NULL, что 0 - всё равно, всё равно...
6 авг 13, 15:08    [14669946]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Torre
Member

Откуда:
Сообщений: 204
Всем спасибо за комменты, попозже разберу код
6 авг 13, 15:48    [14670258]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как правильно сделать  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Torre
Всем спасибо за комменты, попозже разберу код


а я бы даже не разбирал, это может выглядеть как некое недоверие к коллегам по форуму
6 авг 13, 17:29    [14671234]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить