clausula exist
em quais momentos devo utilizar a clausula EXIST?
Mariana Carvalho
Curtidas 0
Respostas
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.
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
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
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
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
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
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,
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
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
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
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
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
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
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
18/06/2013
maravilhoso saber isso, extremamente UTIL!!!
muito obrigada!!!
muito obrigada!!!
GOSTEI 0
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
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
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
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
18/06/2013
obrigada a todos!!! rsrsrsrs!!!
GOSTEI 0
Joel Rodrigues
18/06/2013
Como o problema foi resolvido, estou encerrando o tópico.
Abraço a todos.
Abraço a todos.
GOSTEI 0