Estou tentando criar uma consulta que seleciona apenas um conjunto de valores, mas exclui outros.
A coluna que estou selecionando chama-se "Participantes" e os valores nela contidos não são um único item de texto, mas uma lista de itens separados por vírgulas (o comprimento e o número de itens variam), por exemplo: "Alpha, Delta, Eta" ou o valor: "Beta, Gamma ou o valor: "Delta, Beta, Epsilon, Theta, Vau".
Eu escrevi esta consulta para tentar obter resultados que incluirão apenas valores como Delta, Eta, Epsilon e Vau, mas não Alpha, Beta, Gamma (significa que não quero que o valor: "Alpha, Delta, Eta" seja incluído, mas quero valores como: "Delta, Zeta, Epsilon")
SELECT DISTINCT Name, Category, CODE, Participants
WHERE(Participants NOT LIKE '%Alpha%'
OR Participants NOT LIKE '%Beta%'
OR Participants NOT LIKE '%Gamma%')
AND (Participants LIKE '%Delta%'
OR Participants LIKE '%Eta%'
OR Participants LIKE '%Epsilon%'
OR Participants LIKE '%Vau%');
Os resultados incluem todos os valores especificados na parte LIKE da consulta, mas NOT LIKE parece não funcionar, pois continuo obtendo resultados como: "Alpha, Eta, Epsilon.
Eu poderia criar várias consultas no Access para filtrar com a consulta LIKE e depois com a consulta NOT LIKE, mas gostaria de encontrar uma maneira de fazer isso em uma única consulta.
Online eu só consegui encontrar exemplos em que há um único LIKE e um NOT LIKE na consulta
Alguém pode sugerir uma solução por favor?
Na sua consulta ao avaliar NOT LIKE você deve usar AND ao invés de OR, pois deseja que todos sejam atendidos.
Isso contrasta com as condições posteriores em que você deseja que qualquer um dos valores seja LIKE valores selecionados onde AND é usado.
Alternativamente, você pode reformular como:
Se você puder colocar essas condições em variáveis de tabela ou Parâmetros com valor de tabela, a consulta se tornará um pouco mais simples: