Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите, как правильно сделать / 23 сообщений из 23, страница 1 из 1
22.07.2013, 01:05
    #38338522
Torre
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
Доброй ночи! Вопрос простой, вызываю ХП с булевым параметром в условии, нужно выбрать все строки со значением ItemsCount > 0, что-то не соображу, как это сделать:

@IsAvailable bit
Select * FROM Items WHERE ItemsCount – и вот тут, как дальше?
...
Рейтинг: 0 / 0
22.07.2013, 08:32
    #38338565
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
TorreWHERE ItemsCount – и вот тут, как дальше?WHERE ItemsCount > 0
...
Рейтинг: 0 / 0
22.07.2013, 11:13
    #38338707
Гость333
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
Телепатирую.
Код: sql
1.
SELECT * FROM Items WHERE @IsAvailable = 'FALSE' OR ItemsCount > 0


Это если @IsAvailable не допускает значения NULL, а только TRUE или FALSE.
Если @IsAvailable может быть NULL, то определитесь, какое поведение вам нужно в таком случае.
...
Рейтинг: 0 / 0
22.07.2013, 19:55
    #38339662
Torre
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
Гость333, спасибо, красивый хак, пожалуй воспользуюсь им:
Код: c#
1.
SELECT * FROM Items WHERE @IsAvailable = 0 OR ItemsCount > 0
...
Рейтинг: 0 / 0
22.07.2013, 23:10
    #38339784
Bator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
Torre, как вариант

Код: sql
1.
SELECT * FROM Items WHERE ItemsCount >= @IsAvailable
...
Рейтинг: 0 / 0
06.08.2013, 14:33
    #38356657
Torre
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
Спасибо всем за ответы.
Теперь ситуация изменилась, нужно получить
Код: c#
1.
 SELECT * FROM Items WHERE GroupId = @GroupId


Но если
Код: c#
1.
@GroupId = 0

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

Подскажите пожалуйста красивый прием, работа горит . Спасибо.
...
Рейтинг: 0 / 0
06.08.2013, 14:38
    #38356671
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
Torre, а чем этот вопрос отличается от предыдущего?
...
Рейтинг: 0 / 0
06.08.2013, 14:39
    #38356675
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
TorreПодскажите пожалуйста красивый прием, работа горит . Спасибо.
Перечитать свое же сообщение
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1036418&msg=14600867
...
Рейтинг: 0 / 0
06.08.2013, 14:40
    #38356676
Torre
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
Shakill, прости, давит время, не могу сообразить как приладить
...
Рейтинг: 0 / 0
06.08.2013, 14:43
    #38356688
Torre
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
Glory, когда например @GroupId = 3 выводит все группы
...
Рейтинг: 0 / 0
06.08.2013, 14:45
    #38356693
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
TorreGlory, когда например @GroupId = 3 выводит все группы
Интересно, а как сравние с 3 может выводить другие значения ?
...
Рейтинг: 0 / 0
06.08.2013, 14:46
    #38356696
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
Torreдавит время, не могу сообразить как приладить
Наймите еще кого-нибудь. Кто будет делать вашу работу.
...
Рейтинг: 0 / 0
06.08.2013, 14:48
    #38356706
Torre
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
Нужно выводить дату по группам, но в некоторых случаях нужно вывести все группы, у меня есть только @GroupId, int
Можно передать NULL
...
Рейтинг: 0 / 0
06.08.2013, 14:49
    #38356710
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
TorreНужно выводить дату по группам, но в некоторых случаях нужно вывести все группы, у меня есть только @GroupId, int
Можно передать NULL
Используйте OR - что непонятного ?
...
Рейтинг: 0 / 0
06.08.2013, 14:52
    #38356715
Torre
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
GloryTorreНужно выводить дату по группам, но в некоторых случаях нужно вывести все группы, у меня есть только @GroupId, int
Можно передать NULL
Используйте OR - что непонятного ? Спасибо, Glory, дошло, сделал так:
Код: c#
1.
SELECT * FROM Items WHERE GroupId = @GroupId OR @GroupId IS NULL
...
Рейтинг: 0 / 0
06.08.2013, 14:53
    #38356719
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
TorreСпасибо всем за ответы.
Теперь ситуация изменилась, нужно получить
Код: c#
1.
 SELECT * FROM Items WHERE GroupId = @GroupId


Но если
Код: c#
1.
@GroupId = 0

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

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

работа.. да уж...
...
Рейтинг: 0 / 0
06.08.2013, 15:00
    #38356731
Torre
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
И ты, Winnipuh...
...
Рейтинг: 0 / 0
06.08.2013, 15:06
    #38356746
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
Код: sql
1.
SELECT * FROM Items WHERE GroupId = ALL(SELECT @GroupId WHERE @GroupId<>0);

???
...
Рейтинг: 0 / 0
06.08.2013, 15:07
    #38356748
Ivan Durak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
TorreGloryпропущено...

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



В процедуре я бы сделал без or. Оптимизатору полегше будет.
Код: sql
1.
2.
3.
4.
if @GroupId is not null
  SELECT * FROM Items WHERE GroupId = @GroupId
else 
  SELECT * FROM Items
...
Рейтинг: 0 / 0
06.08.2013, 15:07
    #38356749
Гость333
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
TorreНо если
Код: c#
1.
@GroupId = 0

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

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


Что-то не стыкуется требуемое условие с реализацией :-)
...
Рейтинг: 0 / 0
06.08.2013, 15:08
    #38356752
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
Гость333TorreНо если
Код: c#
1.
@GroupId = 0


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

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



Что-то не стыкуется требуемое условие с реализацией :-)Что NULL, что 0 - всё равно, всё равно...
...
Рейтинг: 0 / 0
06.08.2013, 15:48
    #38356852
Torre
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
Всем спасибо за комменты, попозже разберу код
...
Рейтинг: 0 / 0
06.08.2013, 17:29
    #38357164
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, как правильно сделать
TorreВсем спасибо за комменты, попозже разберу код

а я бы даже не разбирал, это может выглядеть как некое недоверие к коллегам по форуму
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите, как правильно сделать / 23 сообщений из 23, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]