clausula exist

SQL Server

18/06/2013

em quais momentos devo utilizar a clausula EXIST?
Mariana Carvalho

Mariana Carvalho

Curtidas 0

Respostas

Carlos Tangerino

Carlos Tangerino

18/06/2013

Oi Mariana, Bom Dia! A cláusula EXISTS pode ser utilizada quando, basicamente, você não precisa de informações de uma outra tabela na sua query, mas precisa saber se alguma informação do seu select está ou não em uma outra tabela.
Por exemplo, quando você tem uma tabela de produtos e uma de pedidos, e você só quer trazer aqueles produtos que já tiveram pelo menos um pedido feito. Ou seja, você, pelo EXISTS, vai na tabela de pedidos, ligando por um id de produto, saber se ele está nessa tabela.

select pro.cod_produto, pro.descr_produto from produto pro
where exists (select 1 from pedido ped where ped.id_produto = pro.id_produto);

O mesmo pode ser feito para saber o contrário, quando deseja selecionar os produtos que não tem pedido feito, ou seja, utilize o NOT EXISTS.

select pro.cod_produto, pro.descr_produto from produto pro
where not exists (select 1 from pedido ped where ped.id_produto = pro.id_produto);

Espero ter esclarecido um pouco. Se precisar de algo mais específico, coloque aqui.
GOSTEI 0
Mariana Carvalho

Mariana Carvalho

18/06/2013

poxa, muito interessante, muito legal a funcionalidade...
possi utilizar esses codigo SQL em alguma aplicação não é? interessante, colocar algum
sistema o botão que simplesmente apareça essas opções!!!

obrigada
GOSTEI 0
Alex Lekao

Alex Lekao

18/06/2013

Ola Boa tarde!!!

Uma possibilidade de utilizado seria para informar quais itens nao tiveram vendas em um determinado periodo.

Itens sem vendas, no caso esse tipo de relatorio eh bastante util para saber os itens que estao encalhados e se fazer uma possivel promocao para capitalizar a empresa, aumentar o caixa ou simplesmente desencalhar produtos que nao estao vendendo para inativa-los.

Acredito que a unica coisa que precise ser verificada para se utilizar esta funcao eh a performance dela, se nao ha outra maneira de ter o mesmo resultado de maneira mais performatica.

E parabens ao amigo que colocou a explicacao, ela foi bem clara e objetiva de forma simples para o entendimento, eu sempre tive um pouco de dificuldade de entende-la e compreende-la, e do jeito que explicou ficou muito bom.

Obrigado.

Abraco.

Alex - Lekao
GOSTEI 0
Carlos Tangerino

Carlos Tangerino

18/06/2013

Olá, obrigado Alex - Lekao! Tentei exemplificar da melhor maneira para esclarecer bastante a dúvida da nossa colega Mariana.
Como toda consulta à banco de dados, destacado pelo nosso colega Alex - Lekao, independente de ter ou não o EXISTS, as tabelas consultadas tem que estar bem "amarradas" umas às outras, pois qualquer erro ou falta de um índice, por exemplo, pode deixar a consulta bem lenta...

No exemplo citado, a tabela que será verificada pelo EXISTS, é interessante que tenha um índice criado para a coluna que será a chave, ou seja, um índice para o id_produto. Dessa maneira, o banco utiliza-o para acessar as informações mais rapidamente... e por aí vai...

Abraço,
GOSTEI 0
Alex Lekao

Alex Lekao

18/06/2013

Ola Carlos, boa tarde!!

Embora nao entenda muito bem o funcionamento, na vdd quase nada, eu procuro usar o Plano de Execucao Estimado, ja me ajudou com relacao a uma criacao de indice que melhorou consideravelmente uma consulta que estava fazendo.

Abraco.

Alex - Lekao
GOSTEI 0
Mariana Carvalho

Mariana Carvalho

18/06/2013

poxa, muito interessante, muito legal a funcionalidade...
possi utilizar esses codigo SQL em alguma aplicação não é? interessante, colocar algum
sistema o botão que simplesmente apareça essas opções!!!

obrigada


obrigado a todos pelas respostas, me ajudaram bastante!!!

mas a pergunta acima, é possivel?
GOSTEI 0
Alex Lekao

Alex Lekao

18/06/2013

Sim acredito que sim.

Provavelmente qdo vc vai implementar algum botao vc consegue inserir o codigo sql para aquela funcionalidade do botao, entao eh possivel sim.

So para ressaltar, nao sou programador nem tenho a menor ideia de como se faz botao, etc, etc, etc... srsrsr

Abraco.

Alex - Lekao
GOSTEI 0
Mariana Carvalho

Mariana Carvalho

18/06/2013

maravilhoso saber isso, extremamente UTIL!!!

muito obrigada!!!
GOSTEI 0
Alex Lekao

Alex Lekao

18/06/2013

De nada.... rsrsr

Como disse antes eh bem interessante para um relatorio por exemplo de produtos sem vendas, clientes sem compras, etc, etc... rsrsr

Fico feliz em ter podido ajudar.

Abraco.

Alex - Lekao
GOSTEI 0
Alex Lekao

Alex Lekao

18/06/2013

De nada.... rsrsr

Como disse antes eh bem interessante para um relatorio por exemplo de produtos sem vendas, clientes sem compras, etc, etc... rsrsr

Fico feliz em ter podido ajudar.

Abraco.

Alex - Lekao


Embora a ajuda mesmo foi dada pelo Carlos. ;-.) rsrsrsr

GOSTEI 0
Mariana Carvalho

Mariana Carvalho

18/06/2013

obrigada a todos!!! rsrsrsrs!!!
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

18/06/2013

Como o problema foi resolvido, estou encerrando o tópico.
Abraço a todos.
GOSTEI 0
POSTAR