Compartilhar via


Convenções para combinar critérios de pesquisa no painel critérios

Você pode criar consultas que incluem qualquer número de condições de pesquisa, vinculados com qualquer número de e e ou operadores.Uma consulta com uma combinação de e e ou cláusulas podem se tornar complexas, por isso é útil compreender como tais consultas são interpretadas quando você executá-lo e como tais consultas são representadas na Painel critérios e o painel SQL.

ObservaçãoObservação

Para obter detalhes sobre as condições de pesquisa que podem conter um e ou ou operador, consulte Como: especificam vários critérios de pesquisa para uma coluna e Como: especificar vários critérios de pesquisa 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 e ou ou cláusulas logicamente relacionados uns aos outros.

  • Como a consulta e o modo de exibição Designer representa nas consultas que contêm AND painel critérios e ou.

Para ajudá-lo 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.Os exemplos assumem que você precisa saber informações tais como, por exemplo, longo, 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 executa (qual o nível de trabalho é) e o status do funcionário (por exemplo, aposentado).

Precedência de AND e ou

Quando uma consulta é executada, ela avalia primeiro as cláusulas vinculadas com AND, e depois as vinculadas com ou.

ObservaçãoObservação

O operador não tem precedência sobre AND e ou.

Por exemplo, para localizar a funcionários que trabalham na empresa há mais de cinco anos em cargos de nível baixo ou funcionários com cargos de nível médio sem considerar sua data de admissão, você pode construir uma cláusula WHERE, como o seguinte:

WHERE 
   hire_date < '01/01/90' AND 
   job_lvl = 100 OR
   job_lvl = 200
   

Para substituir a precedência padrão de AND sobre OR, você pode colocar condições específicas entre parênteses no painel de SQL.Os critérios entre parênteses são sempre avaliados primeiro.Por exemplo, para localizar todos os funcionários que trabalham com a empresa mais de cinco anos em cargos de nível médio ou inferiores, você pode construir uma cláusula WHERE, como o seguinte:

WHERE 
   hire_date < '01/01/90' AND 
   (job_lvl = 100 OR job_lvl = 200)
DicaDica

É recomendável que, por motivos de clareza, você sempre Coloque parênteses ao combinar e e ou cláusulas em vez de contar com a precedência padrão.

Como funciona AND múltiplo ou cláusulas

Noções básicas sobre como e e ou cláusulas relacionadas quando combinado pode ajudá-lo a construir e entender melhor as consultas complexas na consulta e View Designer.

Se você vincular diferentes critérios utilizando E, o primeiro conjunto de condições vinculadas com e aplica a todas as condições do segundo conjunto.Em outras palavras, uma condição vinculada com AND a outra condição é distribuída para todas as condições do segundo conjunto.Por exemplo, a seguinte representação esquemática mostra um critério AND vinculado a um conjunto de condições OR:

A AND (B OR C)

A representação acima é logicamente equivalente a seguinte representação esquemática, que mostra como o critério AND é distribuído para o segundo conjunto de condições:

(A AND B) OR (A AND C)

Este princípio de distribuição afetará como usar o Query e View Designer.Por exemplo, imagine que você está procurando todos os funcionários que trabalham com a empresa mais de cinco anos em cargos de nível médio ou inferiores.Você pode inserir a seguinte cláusula WHERE na instrução no painel de SQL:

WHERE (hire_date < '01/01/90' ) AND 
   (job_lvl = 100 OR job_lvl = 200)

A cláusula vinculada com AND se aplica às duas cláusulas vinculadas com ou.Uma forma explícita de expressar isto é repetir o critério AND uma vez para cada condição da cláusula OR.A instrução a seguir é mais explícita (e mais) que a instrução 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)

O princípio de distribuir cláusulas AND a cláusulas OR vinculadas se aplica independentemente de quantos critérios individuais estão envolvidos.Por exemplo, imagine que você deseja localizar os funcionários de nível médio ou superiores que trabalham na empresa 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 e tem 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 vários e ou ou cláusulas são representados no painel critérios

A consulta e o modo de exibição Designer representa seus critérios de pesquisa no O painel de critérios de.No entanto, em alguns casos que envolvem várias cláusulas vinculadas com AND e ou a representação no painel de critérios pode não ser o que você espera.Além disso, se você modificar sua consulta no painel critérios ou painel do diagrama, você pode achar que sua declaração de SQL foi alterada da que você digitou.

Em geral, essas regras determinam como e e ou cláusulas aparecem no painel de critérios:

  • Todas as condições vinculadas com e aparecem na filtro coluna da grade ou na mesma ou... coluna.

  • Todas as condições vinculados a OR aparecem em separado ou... colunas.

  • Se o resultado lógico de uma combinação de e e ou cláusulas é que a distribuição para várias cláusulas OR, painel critérios representa explicitamente este repetindo a cláusula AND tantas vezes conforme necessário.

Por exemplo, no painel de SQL você pode criar um critério de pesquisa, como a seguir, no qual duas cláusulas vinculadas com e têm precedência sobre uma terceira vinculada com ou:

WHERE (hire_date < '01/01/90' ) AND 
  (job_lvl = 100) OR 
  (status = 'R')

A consulta e o modo de exibição Designer representa essa cláusula WHERE no painel critérios da seguinte maneira:

A cláusula WHERE no painel de critérios

No entanto, se as cláusulas OR vinculadas têm precedência sobre a cláusula AND, a cláusula AND é 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 de SQL você pode criar uma cláusula WHERE, como o seguinte:

WHERE (hire_date < '01/01/90' ) AND 
  ( (job_lvl = 100) OR 
  (status = 'R') )

A consulta e o modo de exibição Designer representa essa cláusula WHERE no painel critérios da seguinte maneira:

A cláusula WHERE no painel de critérios 2

Se as cláusulas OR vinculadas envolverem uma coluna de dados, a consulta e o modo de exibição Designer podem colocar toda a cláusula OR em uma única célula da grade, evitando a necessidade de repetir a cláusula AND.Por exemplo, no painel de SQL você pode criar uma cláusula WHERE, como o seguinte:

WHERE (hire_date < '01/01/90' ) AND 
  ((status = 'R') OR (status = 'A'))

A consulta e o modo de exibição Designer representa essa cláusula WHERE no painel critérios da seguinte maneira:

A cláusula WHERE no painel de critérios 3

Se você fizer uma alteração à consulta (como alterar um dos valores no painel critérios), a consulta e o modo de exibição Designer recria a instrução SQL no painel SQL.A instrução de SQL recriada será semelhante a exibição do painel de critérios, em vez de sua instrução original.Por exemplo, se o painel critérios contém cláusulas AND distribuídas, a instrução resultante no painel de SQL será recriada com cláusulas AND explicitamente distribuídas.Para obter detalhes, consulte "Como E funciona com várias cláusulas ou" anteriormente neste tópico.

Consulte também

Outros recursos

Especificando critérios de pesquisa

Referência (Visual Database Tools)