DICA SQL: EXCEPT e INTERSECT

by Jenner Maciejewsky 6. abril 2011 02:57

Questionado por uma pessoa sobre o uso do operador MINUS no SQL Server, resolvi postar essa dica. No Microsoft SQL Server o operador equivalente ao MINUS é o EXCEPT.

 

O que fazem os operadores EXCEPT e INTERSECT? Quando utilizados eles retornam todas as linhas distintas comparando os de duas ou mais consultas.  O EXCEPT retorna todas as linhas da primeira consulta excluindo os resultados que aparecem nas consultas seguintes, enquanto que o INTERSECT retorna todas as linhas da primeira consulta que coincidirem com os resultados das consultas seguintes.

 

Vamos a um exemplo.

 

Para os exemplos vamos considerar as 2 tabelas abaixo, sendo a primeira de Produtos e a segunda de vendas de produtos.

 

IDPRODUTO

NOME

1

Produto 01

2

Produto 02

3

Produto 03

4

Produto 04

5

Produto 05

6

Produto 06

7

Produto 07

8

Produto 08

9

Produto 09

10

Produto 10

TABELA PRODUTOS

 

IDPRODUTO

DATA

QUANT

1

2011-03-16

11

2

2011-02-24

30

5

2011-04-05

5

7

2011-04-05

15

8

2011-04-05

10

TABELA DE VENDAS

 

Para listar todos os produtos que não tenha ocorrido vendas para ele:

 

  SELECT IDPRODUTO FROM PRODUTOS
EXCEPT
  SELECT IDPRODUTO FROM VENDAS 

Consulta 01 – Uso do EXCEPT

 

O resultado da consulta acima será mostrar todos os Produtos da tabela Produtos exceto os Produtos que existam na tabela de Vendas, desta foram o resultado será:

 

IDPRODUTO

3

4

6

9

10

 

Para listar todos os produtos que tenha ocorrido vendas para ele:

 

  SELECT IDPRODUTO FROM PRODUTOS
INTERSECT
  SELECT IDPRODUTO FROM VENDAS 

Consulta 02 – Uso do INTERSECT

 

IDPRODUTO

1

2

5

7

8

Resultado da Consulta 2

 

Maiores detalhes sobre EXCEPT e INTERSECT clique aqui

 

Até a próxima dica.

 

 

Jenner Maciejewsky Rocha
MVP Visual Basic

Tags: , ,

Blog | General | MSDN | TechNet | DICAS

Os comentários estão fechados

Posts Antigos

Awards