![]() |
|
![]() ![]() ![]() |
|
lynx13 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
Доброе утро!!!
Есть запрос вида: 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 |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
СУБД?
Добавлено через 35 секунд Используемые компонеты доступа к БД? -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
lynx13 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
oracle, OraQuery , DataSource
|
|||
|
||||
pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
в реальную таблицу базы данных? Добавлено через 2 минуты фильтровать по дате обязательно после выполнения запроса? или можно прямо в запросе? -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
lynx13 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
||||
|
||||
pseud |
|
||||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
Есть ли проблема в реализации такой логики?
-------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
||||
|
|||||
lynx13 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
С этим понятно, что по идее нужно в каждую часть встявлять строку and tab777.date = :p_date3... но что делать, если этих параметров много и какие-то задаются при поиске, а какие-то нет???? Может как-то можно в sql.text вставить строку and tab777.date = :p_date3 в определенном месте??? например перед(union all), если с фильтром никак... |
|||
|
||||
pseud |
|
||||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
Есть несколько выходов: 1. если параметр не задан, ты передаешь null, если задан - передаешь значение. Такая конструкция съест оба варианта.
2. не совсем понятен твой селект, может его впринципе передалать если все селекты в нем идентичны. можешь реализовать массив селектов в которые в циклах загонять параметры, а потом их объединять union all в общий селект. Хотя я рекомендую пересмотртеть подход к селекту. Выкладывай всё. Может там глобально оптимизировать можно. -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
||||
|
|||||
Deniz |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
другой вариант конструкции:
Добавлено через 2 минуты и 14 секунд Но все же поддерживаю.
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||
|
|||||
pseud |
|
||||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
Deniz, рановато плюсик дал )
ибо конструкция
абсолютно всегда будет отсеивать записи со значением tab777.date = null конструкция же
при незаданном параметре вернет все записи, в том числе tab777.date = null -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
||||
|
|||||
Deniz |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
![]()
С Null'ами всегда есть грабли Так же конструкция
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||
|
|||||
pseud |
|
||||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
задача требует чего?
моя конструкция это решает. если еще необходим и поиск отсутствия дат, то ваще огород имеем ![]()
но это мы с тобой далеко ушли ![]() -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
||||
|
|||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
pseud, мы еще и не туда дойдем
![]() Но, ТС пометил вопрос как решенный, думаю не стоит дальше продолжать. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |