[firebase-br] acho que é bug

Alysson Gonçalves de Azevedo agalysson em gmail.com
Ter Nov 20 16:20:21 -03 2012


Repare se você precisa simplesmente retornar o registro 1, 2 e 3, por que o
usuário pediu, usar o IN está ok.

Agora, se você precisa fazer uma query que retorne registros que atendam à
algum critério...
E modificar ou excluir registros relacionados à consulta anterior, então o
exists ou not exists é o indicado.



Alysson Gonçalves de Azevedo - (11) 984 917 730

"É curioso como as pessoas ficam confusas quando a frase não terminam do
jeito que elas periquito."



Em 20 de novembro de 2012 12:52, Gladiston Santana
<gladiston em vidy.com.br>escreveu:

> para procurar pedidos que não tenham itens :
>
> select * from pedidos a
> where not exists(select * from pedidos_itens b where b.pedido=a.pedido)
>
> Numa SP :
> if not exists(select * from pedidos_itens where pedido=:p_pedido) then
> begin
>    exception ex_generic_error 'Este pedido não possui itens ! Não posso
> prosseguir.'
>    suspend;
>   exit;
> end;
>
> exists é a melhor forma de lidar com subqueries que tratem com a existencia
> de dados (ou não) porque a primeira ocorrência de valor a subquerie não
> precisa continuar sua execução, por isso não precisa de distinct como voce
> teve de fazer com o not in.
>
> inte+
>
> Em 20 de novembro de 2012 12:03, Jean Alysson <jeanpapa em gmail.com>
> escreveu:
>
> > Olá Gladiston,
> >
> > eu uso muito o IN(), mas vendo seu comentário acho que vou mudar.
> > uso sessa forma:
> > monto a parte uma lista de codigos. Ex: codigos:= 1,2,3,4
> > e monto um select via codigo direto no delphi:
> >
> > select * from pedidos where ie_cliente in (codigos)
> > como eu faria usando o EXISTS() ?
> >
> > Obrigado
> > Jean Alysson
> >
> > Em 20 de novembro de 2012 10:21, Gladiston Santana
> > <gladiston em vidy.com.br> escreveu:
> > > Independente do erro, acho que você deveria abandonar o NOT IN() e
> > passar a
> > > usar EXISTS() e NOT EXISTS(), é mais rápido e menos confuso e sem dizer
> > que
> > > é diferente do IN() que não tem limite de elementos.
> > >
> > > PS: Também acho que sua query tá errada, mas é dificil dizer quando não
> > se
> > > está ao vivo conectado em sua base para se conhecer as tabelas.
> > >
> > >
> > > Em 19 de novembro de 2012 21:55, Samuel Peres Ferreira <
> > > samuel.peres.ferreira em gmail.com> escreveu:
> > >
> > >> ola lista
> > >>
> > >>
> > >> uso o fb 2.1
> > >>
> > >>
> > >> tenho o seguinte sql:
> > >>
> > >> delete from cliente
> > >>       where cliente not in
> > >>                   (select distinct cliente (aqui deveria ser
> > 'matricula')
> > >>                            from lancamento)
> > >>
> > >>
> > >> por erro meu, o correto é
> > >>
> > >> delete from cliente
> > >>       where cliente not in
> > >>                   (select distinct matricula
> > >>                            from lancamento)
> > >>
> > >>
> > >>
> > >> na primeira opção, o fb executa e não da erro e não exclui nada.
> > >> deveria dar erro de sintaxe.
> > >>
> > >> na segunda opção, executa corretamente.
> > >>
> > >> acho q é um bug do fb (seria o primeiro que descubro, depois de alguns
> > >> anos).
> > >>
> > >> Samuel
> > >>
> > >> ______________________________________________
> > >> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > >> Para saber como gerenciar/excluir seu cadastro na lista, use:
> > >> http://www.firebase.com.br/fb/artigo.php?id=1107
> > >> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >>
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> >
> >
> > --
> > Atenciosamente
> > Jean Alysson Ambrosio
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista