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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2010, 14:02   #1
sashonk
Форумчанин
 
Регистрация: 26.10.2009
Сообщений: 170
По умолчанию sql запрос к базе

Здравствуйте.
Подскажите, пожалуйста как в запросе специализировать условия выборки. Например, есть строка вида
Код:
SELECT ID FROM USERS WHERE CITY = :FILTER
требуется вместо FILTER указать массив параметров. Сейчас я делаю так:
Код:
...WHERE ((CITY = :FILTER1) OR (CITY = :FILTER2) ...
но так получается слишком накладно
sashonk вне форума Ответить с цитированием
Старый 31.08.2010, 14:14   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

ну, видимо, какие пожелания заказчика - такие и накладные расходы
ничо криминального пока не вижу и чем помочь тоже
может поподробнее распишите?
soleil@mmc вне форума Ответить с цитированием
Старый 31.08.2010, 14:38   #3
sashonk
Форумчанин
 
Регистрация: 26.10.2009
Сообщений: 170
По умолчанию

могу поподробнее. Из базы данных нужно запросить отчет по документам. Документы принадлежат различным отделам. В параметрах отчета можно указать документы каких отделов выводить в отчет. С точки зрения sql , на каждый отдел нам надо добавить в запрос условие
Код:
...or where otdel=:filterN
, где filterN- это и есть название интересуемого отдела. Если же пользователь выберет много отделов (а их в теории может быть больше сотни) то строка запроса станет достаточно длинной. На базе стоит ограничение по длине запроса в 1.5 Кб, и никто не берется гарантировать, что sqlник в эти 1.5Кб влезет.

PS код из первого поста я привел в качестве примера
sashonk вне форума Ответить с цитированием
Старый 31.08.2010, 15:19   #4
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

sashonk, чтобы было меньше накладок, фильтр составляй без условия OR, альтернативой будет объединение UNION.
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 31.08.2010, 16:01   #5
sashonk
Форумчанин
 
Регистрация: 26.10.2009
Сообщений: 170
По умолчанию

Не, не так это делается) нашел!

Код:
...where otdel IN (value1, value2, ...)
Проблема решена, спасибо
sashonk вне форума Ответить с цитированием
Старый 31.08.2010, 16:02   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

еще есть и такой вариант
Код:
 where otdel in (:filterN, ...)
а чо за субд?
soleil@mmc вне форума Ответить с цитированием
Старый 31.08.2010, 17:00   #7
sashonk
Форумчанин
 
Регистрация: 26.10.2009
Сообщений: 170
По умолчанию

Цитата:
а чо за субд?
СУБД - db2
sashonk вне форума Ответить с цитированием
Старый 31.08.2010, 23:18   #8
RuVarez
Форумчанин
 
Аватар для RuVarez
 
Регистрация: 25.08.2010
Сообщений: 258
По умолчанию

Лучше б на Interbase писал))
RuVarez вне форума Ответить с цитированием
Старый 01.09.2010, 11:11   #9
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

небольшая добавочка - у всех баз есть ограничения
стОит почитать про ограничения в вашей бд
даже на кол-во вхождений в условие фильтра IN (...)
soleil@mmc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL запрос в Delphi к базе в Access Самец_Original БД в Delphi 1 22.05.2010 13:05
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
Запрос к базе данных Table A-1_S БД в Delphi 10 03.09.2009 21:14
Запрос к базе даных mysql Sound PHP 1 15.08.2009 12:14