Convenções para combinar critérios de Pesquisar no painel de critérios
Você pode criar consultas que incluem qualquer número de condições de Pesquisar vinculados com qualquer número de AND e OR operadores.Uma consulta com uma combinação de AND e OR cláusulas podem se tornar complexas, portanto, é útil compreender como tal uma consulta é interpretada quando você executar e como é representada como uma consulta no Painel critérios and Painel SQL.
Observação: |
---|
Para obter detalhes sobre critérios de Pesquisar que contêm apenas um AND ou OR operador, consulte Como: Especificar vários critérios de Pesquisar para uma coluna e Como: Especificar vários critérios de Pesquisar para várias colunas. |
Abaixo você encontrará informações sobre:
A precedência de AND e OR em consultas que contêm ambas.
Como as condições em AND e OR cláusulas se relacionam logicamente.
Como o consulta e View Designer representa nas consultas painel critérios que contêm AND e OR.
Para ajudar você a entender a discussão abaixo, imagine que você está trabalhando com um employee tabela que contém as colunas hire_date, job_lvl, e status. sistema autônomo exemplos pressupõem que você precisa conhecer informações tais sistema autônomo tempo, um funcionário tiver trabalhado com a empresa (ou seja, qual data de contratação do funcionário é), que tipo de trabalho do funcionário realiza (o que o nível de trabalho é) e o status do funcionário (por exemplo, aposentado).
Precedência de AND e OR
Quando uma consulta é executada, ela avalia primeiro cláusulas vinculadas com AND, e, em seguida, aqueles vinculadas com OR.
Observação: |
---|
O operador NOT tem precedência sobre AND e OR. |
Por exemplo, para encontrar um funcionários que trabalham na empresa por mais de cinco anos em cargos de nível baixo ou funcionários com sistema autônomo trabalhos de nível médio sem considerar sua data de contratação, você pode construir uma cláusula WHERE, sistema autônomo o seguinte:
WHERE
hire_date < '01/01/90' AND
job_lvl = 100 OR
job_lvl = 200
Para substituir a ordem padrão de precedência de AND sobre OR, você pode colocar condições específicas entre parênteses no painel SQL.As condições em parênteses são sempre avaliadas primeiro.Por exemplo, para localizar todos sistema autônomo funcionários que trabalham na empresa há mais de cinco anos em trabalhos de nível médio ou inferiores, você pode construir uma cláusula WHERE, sistema autônomo o seguinte:
WHERE
hire_date < '01/01/90' AND
(job_lvl = 100 OR job_lvl = 200)
Dica: |
---|
É recomendável que, para maior clareza, você sempre incluir parênteses ao combinar AND e OR cláusulas em vez de contar com a precedência padrão. |
Como e funciona com vários ou cláusulas
Noções básicas sobre como AND e OR cláusulas relacionadas quando combinado pode ajudar você a construir e entender consultas complexas na consulta and View Designer.
Se você vincular várias condições usando AND, o primeiro conjunto de condições vinculadas com AND se aplica a todas as condições do segundo conjunto.Em outras palavras, uma condição vinculada com AND para Outros condição é distribuída para todos os critérios do segundo conjunto.Por exemplo, a seguinte representação esquemática mostra uma condição AND vinculada a um conjunto de condições OR:
A AND (B OR C)
A representação acima é logicamente equivalente à representação esquemática seguinte, que mostra como o critério AND é distribuído para o segundo conjunto de condições:
(A AND B) OR (A AND C)
Esse princípio distributive afeta como usar o consulta e View Designer.Por exemplo, imagine que você está procurando todos os funcionários que trabalham na empresa há mais de cinco anos em trabalhos de nível médio ou inferiores.Você pode inserir a seguinte cláusula WHERE na demonstrativo no painel SQL:
WHERE (hire_date < '01/01/90' ) AND
(job_lvl = 100 OR job_lvl = 200)
A cláusula vinculadas com AND se aplica a ambas as cláusulas vinculadas com OR.Uma maneira explícita de expressar isso é repetir o critério AND uma vez para cada condição na cláusula OR.A demonstrativo a seguir é mais explícita (e mais tempo) que a demonstrativo anterior, mas é logicamente equivalente a ele:
WHERE (hire_date < '01/01/90' ) AND
(job_lvl = 100) OR
(hire_date < '01/01/90' ) AND
(job_lvl = 200)
Aplica o princípio de distribuir cláusulas AND a cláusulas OR vinculadas não importa quantas condições individuais estão envolvidas.Por exemplo, imagine que você deseja localizar funcionários mais altos nível ou médio que trabalham na empresa há mais de cinco anos ou estão aposentados.A cláusula WHERE teria esta aparência:
WHERE
(job_lvl = 200 OR job_lvl = 300) AND
(hire_date < '01/01/90' ) OR (status = 'R')
Depois que as condições vinculadas com AND têm sido distribuídas, a cláusula WHERE ficará assim:
WHERE
(job_lvl = 200 AND hire_date < '01/01/90' ) OR
(job_lvl = 200 AND status = 'R') OR
(job_lvl = 300 AND hire_date < '01/01/90' ) OR
(job_lvl = 300 AND status = 'R')
Como múltiplos e e ou cláusulas são representado no painel Critérios
O consulta e View Designer representa seus critérios de Pesquisar no Painel critérios.No entanto, em alguns casos que envolvem várias cláusulas vinculadas com AND e OR, a representação na painel Critérios talvez não seja o que você espera.Além disso, se você modificar sua consulta no painel de critérios ou Painel de diagrama, você pode achar que seu demonstrativo SQL tenha sido alterado segundo o que você inseriu.
Em geral, essas regras determinam como AND e OR cláusulas aparecem no painel Critérios:
Todas as condições vinculadas com AND aparecem no Filtro coluna da grade ou no mesmo Ou... coluna.
Todas as condições vinculadas com OR aparecem em separado Ou... colunas.
Se o resultado lógico de uma combinação de AND e OR cláusulas é que o AND é distribuído em várias cláusulas OR, o painel de critérios representa isso explicitamente, repetindo a cláusula AND sistema autônomo muitas vezes sistema autônomo necessário.
Por exemplo, no painel SQL você pode criar um critério de Pesquisar, sistema autônomo a seguir, no qual duas cláusulas vinculadas com AND têm precedência sobre uma terceira um vinculadas com OR:
WHERE (hire_date < '01/01/90' ) AND
(job_lvl = 100) OR
(status = 'R')
O consulta e View Designer representa esta cláusula WHERE na painel Critérios da seguinte maneira:
No entanto, se as cláusulas OR vinculadas têm precedência sobre uma cláusula AND, a cláusula AND será repetida para cada cláusula OR.Isso faz com que a cláusula AND sejam distribuídas para cada cláusula OR.Por exemplo, no painel SQL você pode criar uma cláusula WHERE, sistema autônomo o seguinte:
WHERE (hire_date < '01/01/90' ) AND
( (job_lvl = 100) OR
(status = 'R') )
O consulta e View Designer representa esta cláusula WHERE na painel Critérios da seguinte maneira:
Se as cláusulas OR vinculadas envolverem uma coluna de dados, o consulta e View Designer podem colocar a cláusula OR inteira em uma única célula da grade, evitando a necessidade de repetir a cláusula AND.Por exemplo, no painel SQL você pode criar uma cláusula WHERE, sistema autônomo o seguinte:
WHERE (hire_date < '01/01/90' ) AND
((status = 'R') OR (status = 'A'))
O consulta e View Designer representa esta cláusula WHERE na painel Critérios da seguinte maneira:
Se você fizer uma alteração à consulta (sistema autônomo alterar um dos valores no painel de critérios), o Query e View Designer recria o demonstrativo SQL no painel SQL.A demonstrativo SQL recriada será semelhante a painel Critérios exibir em vez de sua demonstrativo original.Por exemplo, se o painel de critérios contém cláusulas AND distribuídas, a demonstrativo resultante no painel SQL será recriada explícitas cláusulas AND distribuídas.Para obter detalhes, consulte "How AND funciona com vários ou cláusulas", anteriormente neste tópico.