Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > Вопрос по фильтрации |
Автор: lynx13 22.2.2010, 10:52 |
Доброе утро!!! Есть запрос вида: Select f1, f2,...fn from tab1, tab2.. where .... and.... ......... union all Select f1, f2,...fn from tab3, tab2.. where .... and.... ......... union all Select f1, f2,...fn from tab4, tab2.. where .... and.... ......... В программе нужно ввести параметры поиска, например по дате, а за тем передать результат в таблицу.. Как для такого запроса использовать фильтр, чтобы поиск осуществлялся по всем трем частям запоса??? Спасибо! |
Автор: pseud 22.2.2010, 12:08 |
СУБД? Добавлено через 35 секунд Используемые компонеты доступа к БД? |
Автор: lynx13 22.2.2010, 12:13 |
oracle, OraQuery , DataSource |
Автор: pseud 22.2.2010, 12:22 |
в реальную таблицу базы данных? Добавлено через 2 минуты фильтровать по дате обязательно после выполнения запроса? или можно прямо в запросе? |
Автор: pseud 22.2.2010, 12:37 | ||||
Есть ли проблема в реализации такой логики?
|
Автор: lynx13 22.2.2010, 12:45 |
С этим понятно, что по идее нужно в каждую часть встявлять строку and tab777.date = :p_date3... но что делать, если этих параметров много и какие-то задаются при поиске, а какие-то нет???? Может как-то можно в sql.text вставить строку and tab777.date = :p_date3 в определенном месте??? например перед(union all), если с фильтром никак... |
Автор: pseud 22.2.2010, 12:53 | ||||
Есть несколько выходов: 1. если параметр не задан, ты передаешь null, если задан - передаешь значение. Такая конструкция съест оба варианта.
2. не совсем понятен твой селект, может его впринципе передалать если все селекты в нем идентичны. можешь реализовать массив селектов в которые в циклах загонять параметры, а потом их объединять union all в общий селект. Хотя я рекомендую пересмотртеть подход к селекту. Выкладывай всё. Может там глобально оптимизировать можно. |
Автор: Deniz 24.2.2010, 11:52 | ||
другой вариант конструкции:
Добавлено через 2 минуты и 14 секунд Но все же поддерживаю. |
Автор: pseud 25.2.2010, 10:09 | ||||
Deniz, рановато плюсик дал ) ибо конструкция
абсолютно всегда будет отсеивать записи со значением tab777.date = null конструкция же
при незаданном параметре вернет все записи, в том числе tab777.date = null |
Автор: Deniz 25.2.2010, 11:28 | ||||
![]()
С Null'ами всегда есть грабли Так же конструкция
|
Автор: pseud 25.2.2010, 12:12 | ||||
задача требует чего?
моя конструкция это решает. если еще необходим и поиск отсутствия дат, то ваще огород имеем ![]()
но это мы с тобой далеко ушли ![]() |
Автор: Deniz 25.2.2010, 13:45 |
pseud, мы еще и не туда дойдем ![]() Но, ТС пометил вопрос как решенный, думаю не стоит дальше продолжать. |