Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2012, 11:01   #1
ins813
Форумчанин
 
Регистрация: 18.05.2012
Сообщений: 111
По умолчанию Запрос - фильтрация mssql

Здравствуйте, не могу разобраться, как правильно прописать фильтрацию по нескольким значениям переменной ?

Код:
ADOQuery1.SQL.Text :='SELECT marka_avto,gnz_avto,npl,fio_vod,tn_vod,Vidano_litr FROM dbo.gorn'
+ ' WHERE datvid BETWEEN :StartDate AND :FinishDate and t_a=:t_a ';
taa:='ВОЛГА';
taa:='УАЗ';
 ADOQuery1.Parameters.ParamByName('t_a').Value:=taa;
ins813 вне форума Ответить с цитированием
Старый 05.10.2012, 11:13   #2
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

разве OR тебе не поможет?

Код:
select * FROM TABLE1
where переменная1=3 OR переменная 2=4 OR ПЕРЕМЕННАЯ 3=0
kate158 вне форума Ответить с цитированием
Старый 05.10.2012, 11:39   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

когда нужно выбрать несколько значений для одного поля то можно воспользоваться OR (как предложила kate158), но лучше использовать конструкцию IN
примерно так:
Код:
....WHERE datvid BETWEEN дата1 AND дата2 and t_a in ('ВОЛГА', 'УАЗ')
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.10.2012, 12:01   #4
ins813
Форумчанин
 
Регистрация: 18.05.2012
Сообщений: 111
По умолчанию

Да, or мне не подойдет, и конструкция and t_a in ('ВОЛГА', 'УАЗ') - ругается на неверный синтаксис. Апострофы не нудны в скобках, да и t_a=:t_a должна быть, так что хз
ins813 вне форума Ответить с цитированием
Старый 05.10.2012, 13:00   #5
ins813
Форумчанин
 
Регистрация: 18.05.2012
Сообщений: 111
По умолчанию

все, решил проблему
Код:
...WHERE (t_a=:P1 or  t_a=:P2 or t_a=:P3 or t_a=:P4);' 
ADOQuery1.Parameters.ParamByName('P1').Value:='Волга';
...
ins813 вне форума Ответить с цитированием
Старый 05.10.2012, 13:41   #6
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

оператор OR будет сильно тормозить выборку при большой нагрузке
лучше всё-же прислушаться с совету Serge и воспользоваться конструкцией IN c теми же самыми параметрами
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MsSql добавление параметров в запрос Claster Помощь студентам 10 09.08.2012 12:45
MSSQL Xe-Xe SQL, базы данных 4 31.10.2011 15:39
C# + MSSQL dampirik Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 3 17.12.2009 01:40
mssql + с# dampirik SQL, базы данных 1 14.12.2009 19:03
MsSql-Запросы Diamand SQL, базы данных 4 18.06.2008 06:30