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á:
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
Resultado da Consulta 2
Maiores detalhes sobre EXCEPT e INTERSECT clique aqui
Até a próxima dica.
Jenner Maciejewsky Rocha
MVP Visual Basic