Доступ к Несовпадающему или аналогичному запросу, если столбец не содержит или не похож на другой столбец - PullRequest
1 голос
/ 30 апреля 2019

Я хочу разработать запрос, который в основном выполняет массовое количество "Not Like "*x*", за исключением того, что все, что я не хотел бы, чтобы запрос содержал в другом столбце.

Я знаю, что могу это сделатьпо одному, просто используя критерии и указав "Not like "*x*", но я понятия не имею, как сделать not like для целого столбца данных.

Итак, длинная версия такова, что у меня естькуча камер, размещенных на нескольких разных серверах в корпоративной сети.Каждая из этих камер находится в одной подсети, и все, кроме последнего октета IP-адреса, соответствуют серверу.Теперь я уже создал поле в запросе, которое обрезает последний октет моего IP-адреса, так что теперь у меня в основном есть заранее заданный диапазон IP-адресов, в котором могут находиться камеры.Тем не менее, у меня нет точного перечня каждой из камер - и на самом деле не существует быстрого способа сделать это.

У меня есть список проблем, над которыми я работаю, и я заметил некоторыеиз камер, появляющихся в списке вопросов (в основном таблица, которая включает в себя несколько IP-адресов).Я хотел бы удалить все возможные экземпляры камер из отчета.

Я видел проекты, в которых люди могли сравнивать столбцы, но я хочу сделать наоборот.Я хочу сгенерировать запрос, в котором он не содержит ничего похожего на то, что находится в столбце камеры.

Ради этого я назову запрос, в котором у меня есть диапазоны камеры Camera Ranges и поле Camera Range.

Есть ли способ, которым я могу это сделать?

Я открыт для разработки запроса или даже для изменения таблицы, чтобы упростить выполнение запроса.

1 Ответ

0 голосов
/ 30 апреля 2019

Похоже на ответ, который я предоставил здесь , вместо того, чтобы использовать отрицательный выбор, в котором вы проверяете, является ли значение, содержащееся в записи, , а не любая запись в другом наборе данных, более простой подход состоит в том, чтобы сопоставить те, которые похожи на набор данных, и вернуть эти записи с без совпадения .

Для этого вы можете использовать left join в сочетании с условием is null в предложении where, например:

select 
    MainData.*
from 
    MainData left join ExclusionData on 
    MainData.TargetField like ExclusionData.Pattern
where 
    ExclusionData.Pattern is null

Или, если поле шаблона еще не содержит подстановочные операторы:

select 
    MainData.*
from 
    MainData left join ExclusionData on 
    MainData.TargetField like '*' & ExclusionData.Pattern & '*'
where 
    ExclusionData.Pattern is null

Обратите внимание, что MS Access не сможет представлять такие вычисленные объединения в конструкторе запросов, но ядро ​​базы данных JET, используемое MS Access, все еще сможет интерпретировать и выполнять действительный SQL.

...