Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Множественный фильтр по наборам из таблицы  [new]
Demon_248
Member

Откуда:
Сообщений: 6
Помогите пожалуйста! Не могу справится с задачей:
есть две таблицы 1 Данные 2 Значения
в первой набор данных поля '1 2 3 4 5 ...' во второй значения для фильтра 'а'
как выбрать уникальные записи по фильтру поля 'а' таблицы значения из таблицы данные
всяко пробовал склоняюсь к
SELECT *
FROM Данные
WHERE  данные.1 in (select a from Значения) and данные.2 in (select a from Значения) and ............;
либо
SELECT *
FROM Данные
WHERE   (select a from Значения where значения.а=данные.1) and  (select a from Значения where значения.а=данные.2) and ....
.....;

все работает если все подзапросы возвращают данные
если в таблице значения нет значений для фильтрции вся конструкция возвращает пусто так как получается and null

возможно ли ипользовать для каждого подзапроса iff для отображения is null?
все перепробовал не получается как отработать если хоть один подзапрос пустой по нему is null или на крайняк like '*'

идея в том, что если не задан какой либо фильтр или группа из данных фильтров выдать выборку and по остальным

Сообщение было отредактировано: 10 июн 21, 18:48
10 июн 21, 18:13    [22333999]     Ответить | Цитировать Сообщить модератору
 Re: Множественный фильтр по наборам из таблицы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 7344
Demon_248,
посмотрите это:

К сообщению приложен файл (формированиеСтрокиWhere.rar - 49Kb) cкачать
10 июн 21, 18:45    [22334044]     Ответить | Цитировать Сообщить модератору
 Re: Множественный фильтр по наборам из таблицы  [new]
Demon_248
Member

Откуда:
Сообщений: 6
(iif (exists(select a from значения where а=1),1 in (select а from значения),1 not in (select а from значения) );
но что то смущает особенно not in

я новичек, может быть поможете модернизировать
10 июн 21, 18:53    [22334050]     Ответить | Цитировать Сообщить модератору
 Re: Множественный фильтр по наборам из таблицы  [new]
Demon_248
Member

Откуда:
Сообщений: 6
Спасибо! но реализовано макросом, нужен sql
10 июн 21, 19:02    [22334058]     Ответить | Цитировать Сообщить модератору
 Re: Множественный фильтр по наборам из таблицы  [new]
Demon_248
Member

Откуда:
Сообщений: 6
Demon_248,
exists(select a from значения where а=1)

и в этом случае отрабатывает всегда false (((
как задать условие

Сообщение было отредактировано: 10 июн 21, 19:04
10 июн 21, 19:11    [22334071]     Ответить | Цитировать Сообщить модератору
 Re: Множественный фильтр по наборам из таблицы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 7344
Demon_248,
Может я чё не понимаю-но при чем тут exists?
Подключиться к сторонней базе,создать запрос к ней(если надо с параметрами) и назначить его источником строк для combo...Фсё...Или я чего-то не знаю\не понимаю
При Вашем подходе (не понятном мне от слова совсем) что будет если, по какой-либо причине, изменят порядок столбцов в таблице на сервере
10 июн 21, 20:40    [22334093]     Ответить | Цитировать Сообщить модератору
 Re: Множественный фильтр по наборам из таблицы  [new]
Demon_248
Member

Откуда:
Сообщений: 6
WHERE  (iif ((select count(0)  from значения,данные where а=1)<>0 ,1 in (select а from значения),1 not in (select а from значения))) and


пришел к такому решению, подскажите насколько верное с точки зрения нагруженности
11 июн 21, 05:36    [22334154]     Ответить | Цитировать Сообщить модератору
 Re: Множественный фильтр по наборам из таблицы  [new]
__Michelle
Member

Откуда:
Сообщений: 3199
Demon_248
....
SELECT *
FROM Данные
WHERE  данные.1 in (select a from Значения) and данные.2 in (select a from Значения) and ............;
либо
SELECT *
FROM Данные
WHERE   (select a from Значения where значения.а=данные.1) and  (select a from Значения where значения.а=данные.2) and ....
.....;

все работает если все подзапросы возвращают данные
если в таблице значения нет значений для фильтрции вся конструкция возвращает пусто так как получается and null

возможно ли ипользовать для каждого подзапроса iff для отображения is null?
все перепробовал не получается как отработать если хоть один подзапрос пустой по нему is null или на крайняк like '*'

идея в том, что если не задан какой либо фильтр или группа из данных фильтров выдать выборку and по остальным

А если заменить AND на OR ?
WHERE (select a from Значения where значения.а=данные.1) OR (select a from Значения where значения.а=данные.2) OR ....
11 июн 21, 11:14    [22334254]     Ответить | Цитировать Сообщить модератору
 Re: Множественный фильтр по наборам из таблицы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 7344
Demon_248
....во второй значения для фильтра 'а'.....
покажите несколько(1-2)значений этого поля
11 июн 21, 13:00    [22334350]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить