![]() |
|
Модераторы: Akina |
![]()
|
|
| Sor |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 4.11.2006 Репутация: нет Всего: нет |
Вопрос в следующем:
есть две таблички, в одной значения 123 234 345 456 В другой указаны маски 1 6 Нужен запрос который выводит разность таблиц относительно маски, т.е. на выходе табличка 234 345 подскажите как сделать... |
|||
|
||||
| Akina |
|
||||||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Поскольку количество масок заранее не определено, влоб на SQL тут не вывернуться - MS Jet SQL не признает Match, а Like использовать не удастся.
Однако задача решаема. Решим ее сначала построением нескольких запросов. Запрос Q1 - просто посчитает нам количество масок.
Запрос Q2 перемножит нам таблицы, и для каждой строки определит вхождение маски в строку
Запрос Q3 Сгруппирует результаты запроса Q2
И, наконец, следующий запрос сравнит результаты запросов Q1 и Q3, выведя только те строки, где равенство (т.е. не найдено ни единого совпадения с маской)
На глаз это должно заработать. Если нет - ищи и исправляй ошибки в реализации логики. А когда отладишь - просто собери все это в один запрос. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||||||
|
|||||||||
| Sor |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 4.11.2006 Репутация: нет Всего: нет |
Спасибо, сейчас попробую.
А то в голову ничего не приходит кроме сбора строчки вида SELECT * FROM table1 WHERE table1.field1 NOT LIKE ("*mask1*") AND table1.field1 NOT LIKE ("*mask2*") ..... Кстати, насколько длинный может быть запрос? |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Это ты не обойдешься одним запросом - я про это говорил. Нельзя использовать набор записей для составления наборов масок с использованием их в одном условии отбора. Да тебе-то какой не наплевать? пусть Аксесс разбирается... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Sor |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 4.11.2006 Репутация: нет Всего: нет |
запрос который я привел в качестве примера - работает
поэтому про длину запроса и спросил, если у меня масок будет 100 или 1000, прожует аксесс это или нет? |
|||
|
||||
| bopoha |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
Есть такой вариант:
только он очень медленный. и побыстрее:
рекомендую использовать второй вариат для простоты маска это: *1* *6* запросы выполнялись в Access 2003 |
||||
|
|||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
В последней инструкции небольшая ошибочка, забыл про NOT. И работает она верно толькое без NOT, т.е. когда нужно выбрать все записи удовлетворяющие маскам.
|
|||
|
||||
![]()
|
| Правила форума "MS Access" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS Access | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |