SUBSELECT (Subconsultas)

O uso de subselects pode facilitar a escrita de algumas consulta complexas, principalmente quando muitas tabelas estão envolvidas ou há necessidade de Group By porém não se deseja usá-lo.

Os exemplos abaixo especificam os casos de uso mais comuns para subselects.

/* TIPO 1 : SUBSELECT NA CLAUSULA WHERE */

SELECT
*

FROM VENDAS

WHERE DATAPEDIDO =
( SELECT

MAX(DATAPEDIDO)
FROM VENDAS)

 

/* TIPO 2 : SUBSELECT NA CLAUSULA SELECT */

SELECT V.VendaID,

    (SELECT
SUM(QTD*ValorUnitario)

     FROM VendasDetalhe VD

     WHERE VD.VendaID = V.VendaID )
as qtdTotal

FROM Vendas V

 

/* TIPO 3 : SUBSELECT NA CLAUSULA FROM*/

SELECT Venda, Total FROM

    ( SELECT
TOP 10 *
FROM Vendas )
AS VVENDA

 

Considerações:

Tipo 1: A subconsulta é executada uma única vez. Antes da consulta externa.

Tipo 2: A subconsulta é executada para cada linha da tabela externa. CUIDADO !
– Esse comportamento pode prejudicar em muito o desempenho da consulta.

Tipo 3: Podemos selecionar quaisquer campos da tabela externa, como se esta fosse uma tabelea real . (Note o apelido VVENDA, é fundamental dar um apelido para a tabela, sem isso a consulta dará erro!)

Sobre Prof. Vinicius Paluch

Consultor em Tecnologia e Professor, atuando há 20 anos em diversos projetos de Bancos de Dados, Business Intelligence, Portais Corporativos e CRM. Foco de Atuação: Microsoft SharePoint e Microsoft SQL Server Área de Interesse e Pesquisa: Jogos Online na Educação
Esse post foi publicado em Banco de Dados, Banco de Dados I, Conceitos. Bookmark o link permanente.

2 respostas para SUBSELECT (Subconsultas)

  1. Rogerio Gomes Martins disse:

    é o subselect é muito eficaiz pois nos permite fazer uma consulta dentro de outra e este é o seu principal objectivo.

  2. Dieime Morais disse:

    Muito obrigado, foi de grande ajuda, não lembrava como era realizado consultas em cima de uma outra consulta.

Deixe um comentário