Como fazer uma subconsulta dentro de um FROM?

Podemos usar subconsultas dentro do FROM no SQL para criar tabelas temporárias e realizar operações mais complexas de forma eficiente.

Como fazer uma subconsulta dentro de um FROM?

Uma subconsulta dentro do FROM é usada para criar uma tabela temporária no momento da execução da consulta principal. Isso permite manipular os dados antes de combiná-los com outras tabelas.

Criando uma tabela temporária dentro do FROM

Se quisermos calcular a média de preços de cada categoria e depois buscar produtos que tenham um preço acima da média de sua própria categoria, podemos fazer:

SELECT p.nome, p.preco, temp.media_preco 
FROM produtos p 
JOIN (
    SELECT categoria, AVG(preco) AS media_preco 
    FROM produtos 
    GROUP BY categoria
) AS temp ON p.categoria = temp.categoria 
WHERE p.preco > temp.media_preco;

Aqui, criamos uma subconsulta dentro do FROM (temp) que calcula a média de preços por categoria e depois usamos essa tabela temporária para filtrar os produtos mais caros.

Usando subconsulta dentro de FROM para contar pedidos por cliente

SELECT c.nome, pedidos_por_cliente.total_pedidos 
FROM clientes c 
JOIN (
    SELECT cliente_id, COUNT(*) AS total_pedidos 
    FROM pedidos 
    GROUP BY cliente_id
) AS pedidos_por_cliente ON c.id = pedidos_por_cliente.cliente_id;

Essa consulta conta os pedidos por cliente em uma subconsulta e depois junta o resultado com a tabela de clientes.

Quando usar subconsultas dentro do FROM?

  • Quando precisamos calcular valores agregados antes da consulta principal.
  • Quando queremos criar uma tabela temporária sem precisar criar uma VIEW ou TABLE permanente.
  • Quando um JOIN direto seria muito complexo ou afetaria a legibilidade da consulta.

Cuidados ao usar subconsultas dentro do FROM

  • Evite usar subconsultas dentro de FROM para grandes volumes de dados, pois podem afetar o desempenho.
  • Nomeie a subconsulta com um alias para evitar erros de sintaxe.
  • Considere criar uma VIEW se a subconsulta for usada frequentemente, pois pode otimizar a execução.

Subconsultas dentro do FROM são uma poderosa técnica do SQL para manipular dados de forma eficiente sem alterar tabelas permanentes. Elas são frequentemente usadas para criar tabelas temporárias no momento da execução da consulta, permitindo cálculos intermediários antes da consulta principal. Em sistemas de relatórios, podemos usá-las para calcular totais antes de gerar um resultado final, tornando a análise de dados mais organizada e eficiente.

Algumas aplicações:

  • Calcular médias ou totais antes de executar a consulta principal
  • Criar tabelas temporárias sem precisar criar uma VIEW
  • Facilitar a leitura de consultas complexas
  • Segmentar dados para relatórios e análises detalhadas
  • Evitar junções muito pesadas quando os dados precisam ser agregados primeiro

Dicas para quem está começando

  • Sempre dê um alias à subconsulta para evitar erros
  • Se a subconsulta for muito utilizada, considere criar uma VIEW para otimizar
  • Teste a subconsulta separadamente antes de usá-la no FROM
  • Evite usar subconsultas dentro de FROM em bases de dados muito grandes
  • Se precisar filtrar os resultados finais, utilize WHERE na consulta principal

Contribuições de Fernando Albuquerque

Compartilhe este tutorial: Como fazer uma subconsulta dentro de um FROM?

Compartilhe este tutorial

Continue aprendendo:

Como usar uma subconsulta dentro de um WHERE?

Subconsultas dentro do WHERE no SQL permitem filtrar registros dinamicamente com base nos resultados de outra consulta.

Tutorial anterior

Como usar uma subconsulta dentro de um JOIN?

Subconsultas dentro de JOIN no SQL permitem criar tabelas temporárias dinâmicas e combiná-las com outras tabelas de forma eficiente.

Próximo tutorial