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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2011, 18:04   #1
xil
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 98
По умолчанию sql запрос

делаю поиск в таблице по нескольким условиям ... необходимо сделать так чтобы поиск шел только по заполненным полям, если заполнено одно поле то выборка идет только по одному условию, если два поля то выборка по двум условиям и так далее
Как вы сформулируете вопрос так вам и ответят
xil вне форума Ответить с цитированием
Старый 25.01.2011, 18:12   #2
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

а в чем проблема-то?
_Engine_ вне форума Ответить с цитированием
Старый 25.01.2011, 18:31   #3
xil
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 98
По умолчанию

вот например
.... WHERE условие1 or условие2; ....
если заполнено одно поле то все нормально а если два то получаем результат удовлетворяющий первому или второму условию (оператор and не катит т.к. условий может быть больше)
нужно сделать так чтобы выполнялись только те условия в которые введены параметры поиска
Как вы сформулируете вопрос так вам и ответят
xil вне форума Ответить с цитированием
Старый 25.01.2011, 19:11   #4
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

формируйте запрос динамически исходя из ваших условий
_Engine_ вне форума Ответить с цитированием
Старый 26.01.2011, 11:46   #5
jmadhead
Пользователь
 
Регистрация: 10.09.2009
Сообщений: 19
По умолчанию

Просто к каждому условию нужно подставить is not null, то есть:
WHERE (условие1 and поле1 is not null) or (условие2 and поле2 is not null)
jmadhead вне форума Ответить с цитированием
Старый 26.01.2011, 14:15   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) не вижу принципиальных сложностей. Да и на форуме неоднократно были примеры динамического создания запросов

2)
Цитата:
Код:
WHERE (условие1 and поле1 is not null)
если в условие1 входит поле1, то такая запись - тавтология. при задании таком задании поля где поле1 is NULL в любом случае не попадают!
попробуйте выбрать
SELECT * from Таблица where поле1=0
а потом,
SELECT * from Таблица where поле1<>0
так вот, ни в первом, ни во-втором запросе записи, где поле1 is NULL не будут отобраны!



3) Вы точно уверены, что условия должны связываться через OR ?! Т.е. фактически найти или те записи, которые попадают под одно условие или те, которые попадают под другое?
Просто в 99% систем, если Вы задаёте несколько критериев, то они объединяются по условию AND (И). Ну, допустим, я задаю производителя техники Samsung и тип устройства - телевизор. нажимаю найти. Но это не значит, что я хочу найти ВСЁ, что производит фирма самсунг ПЛЮС телевизоры ВСЕХ производителей!!


4) и последнее, а при чём здесь SQL ? Вы на чём данный код пишите (клиент на чём, где условия задаются то)? Вот в подходящем разделе и создавайте тему.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос с 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
запрос sql sleeper_Izh SQL, базы данных 2 20.06.2008 11:27
SQL-запрос Dissonance БД в Delphi 5 17.06.2008 07:11
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15