![]() |
|
![]() ![]() ![]() |
|
oigolikova |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 8.9.2008 Репутация: нет Всего: нет |
Привет.
У кого-нибудь стояла задача: выбрать данные, при совпадении 10 условий? Насколько я знаю, то это необходимо писать 2 в степени 10 всех возможных вариантов выбранных условий. Кто-то знает другой вариант? Более конкретно: есть таблица Документы и таблица События с этими документами (максимальное значение событий 10, но они могут повторяться). Данные связаны по уникальному номеру из таблицы Документов. Нужно выбрать те документы, у кого будут все события, которые отмечены на форме. Помогите, пожалуйста. ![]() |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 7 Всего: 130 |
Так а where чем не подходит?
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
oigolikova |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 8.9.2008 Репутация: нет Всего: нет |
тем что на форме можно отметить, что будем искать такое событие, а можно не отметить...а код события записывается в одно и тоже поле....просто в разных строках.... а на 10 событий можно написать аж 1024 варианта выделенных событий, что нужно отобрать... проблема только в этом.
|
|||
|
||||
DimW |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: нет Всего: 44 |
:p_action1, :p_action2, :p_action3 - параметры на форме припомощи которых выбираешь нужные события(допустим их всего 3). count(distinct action) - контрольная сумма событий документа, т.е. количество уникальных событий для документа. (decode(:p_action1, null, 0, 1) + decode(:p_action2, null, 0, 1) + decode(:p_action3, null, 0, 1)) - сравнение контрольной суммы параметров, т.е. количество не пустых значений параметров должно быть равно уникальному кол-ву событий для документа. decode(:p_action1, null, 0, 1) - не знаю какой функцией заменить decode, но работает он так: если параметер пустой то 0 иначе 1. надеюсь идея понятна, как заточить под фокспро вам видней, в нем я не силен, извиняйте. Добавлено @ 17:21
вот здесь непонял, поясните плиз. Это сообщение отредактировал(а) DimW - 27.7.2009, 17:22 |
||||
|
|||||
Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: 13 Всего: 60 |
полей для отбора 10? если да то where по условия (поле = значение с формы or empty(значение с формы)) или же слепить строку отбора и вставить ее макроподстановкой -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
oigolikova |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 8.9.2008 Репутация: нет Всего: нет |
выкладываю таблицы, откуда становится понятно, что одно поле, но 10 значений...
отобрать хотят данные по этим значениям... то только с одним, то с двумя, то со всеми 10... Добавлено через 1 минуту и 16 секунд только всем спасибо, мне уже помогли на другом форуме... хотя я бы рассмотрела вариант попроще ![]() Присоединённый файл ( Кол-во скачиваний: 2 ) ![]() |
|||
|
||||
DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: нет Всего: 44 |
||||
|
||||
Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: 13 Всего: 60 |
если поле 1, то вообще не понимаю в чем проблема?
WHERE INLIST(field,value1,value2,value3, ....,value25) -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: нет Всего: 44 |
ну насколько я понял проблему то она выглядит так: у документа есть пусть 5 возможных событий, причем в таблице событий на документ они не уникальны т.е. документ в одном событии может оказаться несколько раз. пусть есть документ DOC_1 который побывал в 3-х событиях: ACTION_1 - два раза ACTION_2 - один раз ACTION_3 - пять раз так вот если пользователь на форме поставил галочки на события ACTION_1, ACTION_2, ACTION_3, ACTION_4, то документ этот не должен найтись т.к. автору нужно: ключивое слово в цитате - все события и только если будут стоять галочки на ACTION_1, ACTION_2, ACTION_3 - DOC_1 должет быть результатом запроса. |
|||
|
||||
oigolikova |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 8.9.2008 Репутация: нет Всего: нет |
Автору было нужно, чтобы нашлись те докуметы, у которых есть именно ACTION_1, ACTION_2, ACTION_3. У кого есть ACTION_1, но нет ACTION_2 или ACTION_3, те документы нам не нужны.
Ваш вариант работает не так, как нужно мне. А если выбраны 10 событий на форме, то все те документы, у которых есть эти 10 событий, а по сколько раз они произошли с этим документом не важно. |
|||
|
||||
DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: нет Всего: 44 |
т.е. количество выбранных типов событий на форме поиска должно совподать с уникальным количеством событий документа, так? вот это как раз таки важно при написании запроса. ну так давайте посмотрим ваш вариант написаный на основе моего и поймем что там не так, если есть желание конечно. вполне может быть что я что то не учел. вобщем покажите тестовые данные, результат и запрос которым вы его получили. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Foxpro/Clipper/Dbase" | |
|
Запрещается! 1. Публиковать ссылки для чисто рекламных целей. 2. Оффтопить, флеймить, говорить не культурно. Пожалуйста, адекватно задавайте свой вопрос. Тема должна создаваться с названием характеризующем Вашу проблему. Задавайте вопросы правильно - как спросите, так вам и ответят. Разрешено! Давать ссылки на статьи, обзоры, если это не нарушает первый пункт правил. Задавая вопрос, давайте нужную информацию касающуюся Вашей проблемы. Этим вы ускорите полезные ответы. P.S. Размещение рекламы будет строго наказываться! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MoLeX |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Foxpro/Clipper/Dbase | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |