[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