Sign in with Microsoft
Sign in or create an account.

Às vezes, talvez você queira usar os resultados de uma consulta como um campo em outra consulta ou como um critério para um campo de consulta. Por exemplo, suponha que você queira ver o intervalo entre os pedidos de cada um dos seus produtos. Para criar uma consulta que mostre esse intervalo, você precisa comparar cada data de pedido com outras datas de pedido para esse produto. A comparação dessas datas de pedido também requer uma consulta. Você pode aninhar essa consulta dentro da consulta principal usando um subconsulta.

Você pode escrever uma subconsistência em um expressão ou em uma instrução linguagem SQL (SQL) em modo SQL.

Neste artigo

Usar os resultados de uma consulta como um campo em outra consulta

Você pode usar uma subconsistência como alias de campo. Use uma subconsistência como alias de campo quando quiser usar os resultados da subconsistência como um campo na consulta principal.

Observação: Uma subconsistência que você usa como alias de campo não pode retornar mais de um campo.

Você pode usar um alias de campo de subconsistência para exibir valores que dependem de outros valores na linha atual, o que não é possível sem o uso de uma subconsistência.

Por exemplo, vamos retornar ao exemplo em que você deseja ver o intervalo entre os pedidos de cada um dos seus produtos. Para determinar esse intervalo, você precisa comparar cada data de pedido com outras datas de pedido para esse produto. Você pode criar uma consulta que mostre essas informações usando o modelo de banco de dados Northwind.

  1. Na guia Arquivo, clique em Novo.

  2. Em Modelos Disponíveis,clique em Modelos de Exemplo.

  3. Clique em Northwinde clique em Criar.

  4. Siga as instruções na página Northwind Traders (na guia de objeto Tela de Inicialização) para abrir o banco de dados e então feche a janela Caixa de Diálogo de Logon.

  5. Na guia Criar, vá para o grupo Consultas e clique em Design da Consulta.

  6. Clique na guia Consultas e clique duas vezes em Pedidos de Produto.

  7. Clique duas vezes no campo ID do produto e no campo Data da Ordem para adicioná-los à grade de design da consulta.

  8. Na linha Classificar da coluna ID do produto da grade, selecione Ascending.

  9. Na linha Classificar da coluna Data da Ordem da grade, selecione Decrescente.

  10. Na terceira coluna da grade, clique com o botão direito do mouse na linha Campo e clique em Zoom no menu de atalho.

  11. Na caixa de diálogo Zoom, digite ou colar a seguinte expressão:

    Prior Date: (SELECT MAX([Order Date]) 
    FROM [Product Orders] AS [Old Orders]
    WHERE [Old Orders].[Order Date] < [Product Orders].[Order Date]
    AND [Old Orders].[Product ID] = [Product Orders].[Product ID])

    Essa expressão é a subconsistência. Para cada linha, a subconsistência seleciona a data de pedido mais recente menos recente do que a data de pedido que já está associada à linha. Observe como você usa a palavra-chave AS para criar um alias de tabela, para que você possa comparar valores na subconsistência com valores na linha atual da consulta principal.

  12. Na quarta coluna da grade, na linha Campo, digite a seguinte expressão:

    Interval: [Order Date]-[Prior Date]

    Essa expressão calcula o intervalo entre cada data de pedido e a data de pedido anterior para esse produto, usando o valor para a data anterior que definimos usando uma subconsistência.

  13. Na guia Design, no grupo Resultados, clique em Executar.

    1. A consulta é executado e exibe uma lista de nomes de produtos, datas de pedido, datas de ordem anterior e o intervalo entre datas de pedido. Os resultados são organizados primeiro pela ID do produto (em ordem crescente) e, em seguida, pela Data da Ordem (em ordem decrescente).

    2. Observação: Como a ID do Produto é um campo de busca, por padrão, o Access exibe os valores de busca (nesse caso, o nome do produto), em vez das IDs reais do produto. Embora isso altere os valores que aparecem, ele não altera a ordem de classificação.

  14. Feche o banco de dados Northwind.

Início da Página

Usar uma subconsistência como um critério para um campo de consulta

Você pode usar uma subconsistência como um critério de campo. Use uma subconsistência como um critério de campo quando quiser usar os resultados da subconsistência para limitar os valores exibidos pelo campo.

Por exemplo, suponha que você queira revisar uma lista de pedidos que foram processados por funcionários que não são representantes de vendas. Para gerar essa lista, você precisa comparar a ID do funcionário para cada pedido com uma lista das IDs dos funcionários que não são representantes de vendas. Para criar essa lista e usá-la como um critério de campo, use uma subconsistência, conforme mostrado no procedimento a seguir:

  1. Abra Northwind.accdb e habilita o conteúdo.

  2. Feche o formulário de logon.

  3. Na guia Criar, no grupo Outros, clique em Design da Consulta.

  4. Na guia Tabelas, clique duas vezes em Pedidos e Funcionários.

  5. Na tabela Pedidos, clique duas vezes no campo ID do Funcionário, no campo ID do Pedido e no campo Data da Ordem para adicioná-los à grade de design de consulta. Na tabela Funcionários, clique duas vezes no campo Título do Trabalho para adicioná-lo à grade de design.

  6. Clique com o botão direito do mouse na linha Criteria da coluna ID do Funcionário e clique em Zoom no menu de atalho.

  7. Na caixa Zoom, digite ou colar a seguinte expressão:

    IN (SELECT [ID] FROM [Employees] 
    WHERE [Job Title]<>'Sales Representative')

    Esta é a subconsistência. Ele seleciona todas as IDs de funcionários em que o funcionário não tem um cargo de Representante de Vendas e fornece esse resultado definido para a consulta principal. Em seguida, a consulta principal verifica se as IDs dos funcionários da tabela Pedidos estão no conjunto de resultados.

  8. Na guia Design, no grupo Resultados, clique em Executar.

    A consulta é executado e os resultados da consulta mostram uma lista de pedidos que foram processados por funcionários que não são representantes de vendas.

Início da Página

Palavras-SQL comuns que você pode usar com uma subconsistência

Há várias palavras-SQL que você pode usar com uma subconsistência:

Observação: Esta lista não é exaustiva. Você pode usar qualquer palavra-chave SQL em uma subconsistência, excluindo palavras-chave de definição de dados.

  • ALL    Use ALL em uma cláusula WHERE para recuperar linhas que satisfaçam a condição quando comparadas a cada linha retornada pela subconsistência.

    Por exemplo, suponha que você está analisando dados de alunos em uma universidade. Os alunos devem manter um GPA mínimo, que varia de principal para principal. As majors e seus GPAs mínimos são armazenados em uma tabela chamada Majors, e as informações relevantes dos alunos são armazenadas em uma tabela chamada Student_Records.

    Para ver uma lista de majors (e seus GPAs mínimos) para os quais cada aluno com esse principal excede o GPA mínimo, você pode usar a seguinte consulta:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] < ALL
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);
  • ANY    Use ANY em uma cláusula WHERE para recuperar linhas que satisfaçam a condição quando comparadas a pelo menos uma das linhas retornadas pela subconsistência.

    Por exemplo, suponha que você está analisando dados de alunos em uma universidade. Os alunos devem manter um GPA mínimo, que varia de principal para principal. As majors e seus GPAs mínimos são armazenados em uma tabela chamada Majors, e as informações relevantes dos alunos são armazenadas em uma tabela chamada Student_Records.

    Para ver uma lista de majors (e seus GPAs mínimos) para os quais qualquer aluno com essa principal não atender ao GPA mínimo, você pode usar a seguinte consulta:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] > ANY
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);

    Observação: Você também pode usar a palavra-chave SOME para a mesma finalidade; a palavra-chave SOME é sinônimo de ANY.

  • EXISTS    Use EXISTS em uma cláusula WHERE para indicar que uma subconsistência deve retornar pelo menos uma linha. Você também pode prefigurar EXISTS com NOT, para indicar que uma subconsistência não deve retornar linhas.

    Por exemplo, a seguinte consulta retorna uma lista de produtos encontrados em pelo menos uma ordem existente:

    SELECT *
    FROM [Products]
    WHERE EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);

    Usando NOT EXISTS, a consulta retorna uma lista de produtos que não são encontrados em pelo menos uma ordem existente:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • IN    Use IN em uma cláusula WHERE para verificar se um valor na linha atual da consulta principal faz parte do conjunto que a subconsistência retorna. Você também pode prefigurar IN com NOT, para verificar se um valor na linha atual da consulta principal não faz parte do conjunto que a subconsistência retorna.

    Por exemplo, a seguinte consulta retorna uma lista de pedidos (com datas de pedido) que foram processados por funcionários que não são representantes de vendas:

    SELECT [Order ID], [Order Date]
    FROM [Orders]
    WHERE [Employee ID] IN
    (SELECT [ID] FROM [Employees]
    WHERE [Job Title]<>'Sales Representative');

    Usando NOT IN, você pode escrever a mesma consulta dessa maneira:

    SELECT [Order ID], [Order Date]
    FROM [Orders]
    WHERE [Employee ID] NOT IN
    (SELECT [ID] FROM [Employees]
    WHERE [Job Title]='Sales Representative');

Início da Página

Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar Microsoft Office Insider

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?

Obrigado pelos seus comentários!

×