Entrar com a conta da Microsoft
Entrar ou criar uma conta.
Olá,
Selecionar uma conta diferente.
Você tem várias contas
Escolha a conta com a qual você deseja entrar.

Às vezes, você pode querer usar os resultados de uma consulta como um campo em outra consulta ou como critério para um campo de consulta. Por exemplo, suponha que você queira ver o intervalo entre pedidos para cada um de 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. Comparar essas datas de pedido também requer uma consulta. Você pode aninhar essa consulta dentro de sua consulta main usando um subconsulta.

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

Neste artigo

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

Você pode usar uma subconsulta como um alias de campo. Use uma subconsulta como alias de campo quando quiser usar os resultados da subconsulta como um campo na consulta main.

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

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

Por exemplo, vamos retornar ao exemplo em que você deseja ver o intervalo entre pedidos para cada um de 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 mostra 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 Northwind e clique em Create.

  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, no grupo Consultas, 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 do Pedido 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 cole 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 subconsulta. Para cada linha, o subconsulta seleciona a data de pedido mais recente que é menos recente do que a data do pedido que já está associada à linha. Observe como você usa o as palavra-chave para criar um alias de tabela para que você possa comparar valores na subconsulta com valores na linha atual da consulta main.

  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 desse produto, usando o valor para a data anterior que definimos usando uma subconsulta.

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

    1. A consulta é executada e exibe uma lista de nomes de produto, datas do pedido, datas de pedidos anteriores e o intervalo entre as datas do pedido. Os resultados são classificados primeiro pela ID do produto (em ordem crescente) e, em seguida, pela Data do Pedido (em ordem decrescente).

    2. Observação: Como a ID do Produto é um campo de pesquisa, por padrão, o Access exibe os valores de pesquisa (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 subconsulta como critério para um campo de consulta

Você pode usar uma subconsulta como critério de campo. Use uma subconsulta como critério de campo quando quiser usar os resultados da subconsulta 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 subconsulta, conforme mostrado no seguinte procedimento:

  1. Abra Northwind.accdb e habilite seu 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 do Pedido 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 Critérios da coluna ID do funcionário e clique em Ampliar no menu de atalho.

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

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

    Essa é a subconsulta. Ele seleciona todas as IDs do funcionário em que o funcionário não tem um cargo de Representante de Vendas e fornece esse resultado definido como main consulta. A consulta main verifica se as IDs de funcionários da tabela Pedidos estão no conjunto de resultados.

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

    A consulta é executada 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-chave do SQL comuns que você pode usar com uma subconsulta

Há várias palavras-chave SQL que você pode usar com uma subconsulta:

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

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

    Por exemplo, suponha que você esteja analisando dados de alunos em uma faculdade. Os alunos devem manter um GPA mínimo, que varia de curso para curso superior. Os majores e seus GPAs mínimos são armazenados em uma tabela chamada Majors, e as informações relevantes do aluno são armazenadas em uma tabela chamada Student_Records.

    Para ver uma lista de cursos (e seus GPAs mínimos) para os quais cada aluno com essa major 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]);
  • QUALQUER    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 subconsulta.

    Por exemplo, suponha que você esteja analisando dados de alunos em uma faculdade. Os alunos devem manter um GPA mínimo, que varia de curso para curso superior. Os majores e seus GPAs mínimos são armazenados em uma tabela chamada Majors, e as informações relevantes do aluno são armazenadas em uma tabela chamada Student_Records.

    Para ver uma lista de cursos (e seus GPAs mínimos) para os quais qualquer aluno com esse curso não atende 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; o palavra-chave SOME é sinônimo de ANY.

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

    Por exemplo, a consulta a seguir retorna uma lista de produtos encontrados em pelo menos um pedido 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]);
  • EM    Use IN em uma cláusula WHERE para verificar se um valor na linha atual da consulta main faz parte do conjunto que a subconsulta retorna. Você também pode prefigurar IN com NOT, para verificar se um valor na linha atual do main consulta não faz parte do conjunto que o subconsulta retorna.

    Por exemplo, a consulta a seguir 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 forma:

    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?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.

As comunidades ajudam você a fazer e responder perguntas, fazer comentários e ouvir especialistas com conhecimento avançado.

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?
Ao pressionar enviar, seus comentários serão usados para aprimorar os produtos e serviços da Microsoft. Seu administrador de TI poderá coletar esses dados. Política de Privacidade.

Agradecemos seus comentários!

×