[firebase-br] SQL (complexa)
Alysson Azevedo
agalysson em gmail.com
Ter Maio 11 17:50:18 -03 2010
não necessariamente, amigo...
normalmente, temos uma data inicial e uma final e queremos ver todos os
registros que estejam ali no meio...
ai sim, é o que vc falou...
no problema do cara...
ele tem um registro, com dois periodos: dt_inicio e dt_final
para achar esse registro com uma dt_sel qualquer... tem que ser: dt_inicio
<= dt_sel <= dt_final...
ou seja, dt_sel deve estar entre as duas datas do registro...
pro firebird, tanto fazer se é um campo entre dois valores ou um valor entre
dois campos...
--
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 11 de maio de 2010 17:09, cury firebird <cury.fb em gmail.com> escreveu:
> Talvez eu não tenha entendido muito bem o que voce quer.....estou achando
> complicado, pois a consulta deve ser em função da estrutura e não em função
> dos dados!
> então nesse caso ficaria mais fácil trabalhar diretamente no sistema e não
> através do banco!
>
> Se você puder explicar melhor o que está querendo... eu não compreendi
> muito bem !
>
>
> --------------------------------------------------
> From: "Hélio Oliveira" <hpensador em gmail.com>
> Sent: Tuesday, May 11, 2010 1:09 PM
> To: <lista em firebase.com.br>
> Subject: [firebase-br] SQL (complexa)
>
>
> Boa tarde Colegas!
>>
>> Não estou conseguindo chegar a um resultado satisfatório para obter um
>> determinado valor em uma consulta.
>>
>> Tenho uma tabela "TESTE" com os seguintes campos:
>> matricula integer,
>> data_inicio date,
>> data_final date,
>> valor numeric(14,2)
>>
>> A mesma esta populada com os seguinte valores
>> matricula data_inicio data_final valor
>> 10 02/01/2009 30/06/2009 500,00
>> 10 01/07/2009 30/11/2009 650,00
>> 10 01/12/2009 <null> 800,00
>>
>> O que preciso:
>> Se o mês informado estiver compreendido entre 1/2009 e 6/2009 o valor
>> retornado seja 500,00;
>> Se o mês informado estiver compreendido entre 7/2009 e 11/2009 o valor
>> retornado seja 650,00;
>> Se o mês informado for 12/2009 ou maior o valor retornado seja 800,00;
>>
>> Estou tentando com a seguinte SQL mais o resultado não é satisfatório,
>> pois em alguns meses são retornados todos os registros.
>>
>> select x.*
>> from teste x
>> where x.matricula = 10
>> and (((extract(month from x.data_inicio) = :mes
>> and extract(year from x.data_inicio) = :ano)
>> or (extract(month from x.data_inicio) <= :mes
>> and extract(year from x.data_inicio) >= :ano)))
>>
>> --
>> []'s,
>>
>> Hélio Oliveira
>> Analista de Sistemas
>> Delphi Developer
>> http://hpensador.blogspot.com/
>>
>>
>> ______________________________________________
>> 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