[firebase-br] Ajuda num SELECT - lher

Eduardo Jedliczka edujed em gmail.com
Ter Jan 4 14:11:02 -03 2011


Existem várias formas de se fazer, a mais simples é usar um sub-select
Max, mas também dá para fazer com um select aninhado (se você utilizar
o firebird 2.1 ou 2.5).

select pessoa.pes_codigo "Cod Cliente", pessoa.pes_nome "Nome do cliente",
pesrep.pes_cod_repres "Cód. Rep.", pessoa.pes_endere, bairro.bar_nome
"Bairro",
cidade.cid_nome "Cidade", pessoa.pes_fone, pessoa.pes_fone2,
pessoa.pes_fone3,
pessoa.pes_contat, pessoa.pes_consignado, pessoa.pes_condata,
pessoa.pes_condescricao,
pessoa.pes_conexpositor, nota.nf_numero, nota.ped_numero, nota.nf_valtotal,
nota.nf_valsubs, nota.nf_dtsaida

from nota  inner join pessoa on (nota.pes_cod_cli = pessoa.pes_codigo)
inner join pesrep on (pessoa.pes_codigo = pesrep.pes_cod_cliente)
left outer join bairro on (pessoa.bar_codigo = bairro.bar_codigo)
left outer join cidade on (bairro.cid_codigo = cidade.cid_codigo)

where ((nota.pes_rep_cod = :codigo))

and nota.nf_numero = (Select max(x.nf_numero) from nota x where
x.pes_cod_cli = nota.pes_cod_cli and x.nf_dtsaida Between'10.01.2010'
AND '01.04.2011')

ORDER BY PESSOA.PES_NOME, nota.nf_dtsaida

Abraço

==========================
Eduardo Jedliczka
Apucarana - Pr
==========================



Em 4 de janeiro de 2011 12:57, Henrique Ribeiro
<kikeribeiro em gmail.com> escreveu:
>
> Eu pensei aqui numa subconsulta pra retornar as nfs de cada cliente, daí
> pegaria a maior e faria mais uma comparação
>
> AND NOTA.NF_NUMERO IN (*SUBCONSULTA*)
>
> mas tô me perdendo na subconsulta.
>
> Se alguém tiver uma inspiração, muito obrigado.
>
> [  ]'s
>
> Em 4 de janeiro de 2011 12:53, Henrique Ribeiro <kikeribeiro em gmail.com>escreveu:
>
> > Eu até já havia tentado o SELECT FIRST(1), porém, só retorna 1 registo
> > dentre as praticamente 500 compras (de vários clientes junstos).
> >
> > O SELECT FIRST 1 despreza todo o resto do retorno e traz somente 1.
> >
> > Muito obrigado pela ajuda, colegas, mas vamos continuar tentando.
> >
> > [  ]'s
> >
> > Em 4 de janeiro de 2011 12:39, Alysson Gonçalves de Azevedo <
> > agalysson em gmail.com> escreveu:
> >
> > Olha, de cabeça e sem verificar... eu diria pra vc usar assim:
> >>
> >> select first 1 pessoa.pes_codigo .... ORDER BY PESSOA.PES_NOME,
> >> nota.nf_dtsaida Desc
> >>
> >> tenta ai e ve se da certo.
> >>
> >>
> >> Alysson Gonçalves de Azevedo
> >> (11) 8491-7730
> >>
> >> (\(''^_^ )/)
> >>
> >> "Pobre vive dizendo que não tem nada, mas quando vem a enchente, ele sai
> >> gritando: -Perdi tudo!!!"
> >>
> >>
> >>
> >> Em 4 de janeiro de 2011 12:32, Henrique Ribeiro <kikeribeiro em gmail.com
> >> >escreveu:
> >>
> >> > Muito boa tarde aos colegas,
> >> >
> >> > Recorro a vocês porque realmente não estou conseguindo chega ao objetivo
> >> > necessário.
> >> >
> >> > Estou mandando um comando SQL para o Firebird no qual preciso que
> >> retorne a
> >> > última compra do cliente num determindado perído.
> >> > Porém, em meu comando, está retornando TODAS as compras do cliente no
> >> > período.
> >> >
> >> > Segue abaixo meu script para a vossa apreciação:
> >> >
> >> > ====================
> >> > select pessoa.pes_codigo "Cod Cliente", pessoa.pes_nome "Nome do
> >> cliente",
> >> > pesrep.pes_cod_repres "Cód. Rep.", pessoa.pes_endere, bairro.bar_nome
> >> > "Bairro",
> >> > cidade.cid_nome "Cidade", pessoa.pes_fone, pessoa.pes_fone2,
> >> > pessoa.pes_fone3,
> >> > pessoa.pes_contat, pessoa.pes_consignado, pessoa.pes_condata,
> >> > pessoa.pes_condescricao,
> >> > pessoa.pes_conexpositor, nota.nf_numero, nota.ped_numero,
> >> nota.nf_valtotal,
> >> > nota.nf_valsubs, nota.nf_dtsaida
> >> >
> >> > from nota  inner join pessoa on (nota.pes_cod_cli = pessoa.pes_codigo)
> >> > inner join pesrep on (pessoa.pes_codigo = pesrep.pes_cod_cliente)
> >> > left outer join bairro on (pessoa.bar_codigo = bairro.bar_codigo)
> >> > left outer join cidade on (bairro.cid_codigo = cidade.cid_codigo)
> >> >
> >> > where ((nota.pes_rep_cod = :codigo))
> >> > AND nota.nf_dtsaida Between'10/01/2010' AND '01/04/2011'
> >> >
> >> > ORDER BY PESSOA.PES_NOME, nota.nf_dtsaida
> >> >
> >> > ====================
> >> >
> >> > Uso o Firebird-2.1.1.17910-0_Win32 e o IBExpert para rodar meus scripts.
> >> > Programo em Delphi 7.
> >> >
> >> > Agradeço qualquer tipo de ajuda que puderem fornecer.
> >> >
> >> > Um GRANDE abraço e feliz 2011!!!
> >> > ______________________________________________
> >> > 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
> >>
> >
> >
> ______________________________________________
> 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