[firebase-br] RES: RES: RES: RES: Ajuda com SQL e datas + Informação

André Conrado acf em andreconrado.net
Sex Set 21 13:45:03 -03 2012


use este SELECT COMO uma sub-consulta:

SELECT A.COD, A.DESCRICAO, A.IDENTIFICACAO, B.VENCIMENTO
FROM TABELA_A A INNER JOIN (SELECT COD_TABELA_A
          FROM B
          GROUP BY COD_TABELA_A
          HAVING MAX(DATA_VENCIMENTO) < CURRENT_TIMESTAMP) B
ON A.COD = B.COD_TABELA_A

Abs


Em 21 de setembro de 2012 08:25, Maycon-Alphametro
<maycon em alphametro.com.br> escreveu:
> Prezado André, perfeito, funcionou, porém agora eu me só mais uma ajudinha,
> se eu precisasse trazer mais campos da tabela A como descrição e
> identificação, como estou usando o group by ele dá erro, poderia me dar mais
> essa colher de chá ??
>
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
> nome de André Conrado
> Enviada em: quinta-feira, 20 de setembro de 2012 18:36
> Para: FireBase
> Assunto: Re: [firebase-br] RES: RES: RES: Ajuda com SQL e datas + Informação
>
> tente:
>
> SELECT COD_TABELA_A
> FROM B
> GROUP BY COD_TABELA_A
> HAVING MAX(DATA_VENCIMENTO) < CURRENT_TIMESTAMP
>
> Abs
>
> Em 20 de setembro de 2012 17:48, Maycon-Alphametro
> <maycon em alphametro.com.br> escreveu:
>> Veja a resposta abaixo
>>
>> " Bom dia Sandro, primeiramente me desculpe pela demora no retorno,
>>>>
>>>>         Seguinte,fiz um teste com o seu SQL, mais ainda estou com
>>>> problemas, por exemplo o item 1 se eu fizer o seu SQL como a data de
>>>> 30/09/2012 não chegou ele trará a data de 30/06/2012, e isso não é
>>>> verdade pois o item não está vencido, nesse caso ele não deveria
>>>> trazer nada pois eu tenho uma data que é superior a data atual."
>>
>> O que preciso é analisar vários registros, com datas variadas e
>> encontrar os que estão vencendo dentro do mês por exemplo, porém porém
>> se eu pegar menor que data atual ele trará todos os registros de todos
>> os itens e na verdade pode ter itens que não estejam vencidos ou a vencer.
>>
>> Não sei se ficou clara minha dúvida, caso contrário por gentileza me
>> informem que tento elaborar outro exemplo
>>
>> -----Mensagem original-----
>> De: lista-bounces em firebase.com.br
>> [mailto:lista-bounces em firebase.com.br] Em nome de André Conrado
>> Enviada em: quinta-feira, 20 de setembro de 2012 17:08
>> Para: FireBase
>> Assunto: Re: [firebase-br] RES: RES: Ajuda com SQL e datas +
>> Informação
>>
>> Porque o SELECT que o Sandro passou não funciona?
>>
>> Em 20 de setembro de 2012 07:33, Maycon-Alphametro
>> <maycon em alphametro.com.br> escreveu:
>>> Maurício bom dia,
>>>
>>> Cara desculpa pela insistência, mais é que estou perdido com esse
>>> select, na verdade a minha necessidade é trazer sempre o último
>>> registro de cada código da tabela A e que tenha vencimento maior que
>>> a data de hoje, do contrário a consulta retorna vazia, não sei se
>>> consegui esclarecer melhor
>>>
>>> -----Mensagem original-----
>>> De: lista-bounces em firebase.com.br
>>> [mailto:lista-bounces em firebase.com.br] Em nome de MAURICIO COSTA
>>> Enviada em: segunda-feira, 10 de setembro de 2012 18:55
>>> Para: FireBase
>>> Assunto: Re: [firebase-br] RES: Ajuda com SQL e datas
>>>
>>> Estou analisando aqui para poder fazer o sql mas, é a lógica que acho
>>> que esta dificultando. Veja os dados da tabela como você colocou.
>>>> Tabela B
>>>> COD     COD_TABELA _A   DATA_LANCAMENTO DATA_VENCIMENTO
>>>> 1       1                       31/01/2012      31/03/2012
>>>> 2       1                       31/03/2012      30/06/2012
>>>> 3       1                       30/06/2012      30/09/2012
>>>> 4       4                       25/06/2012      25/09/2012
>>>> 5       2                       31/12/2011      28/02/2012
>>>> 6       2                       28/02/2012      30/05/2012
>>>> 7       2                       30/05/2012      30/08/2012
>>> olhando para a última linha onde você descreve que esta vencida, pois
>>> o item
>>> 2 da tabela A tem 3 lançamentos porém tem um que já está vencido
>>> desde 30/08/2012, considerando a data de hoje 04/09/2012.
>>> Esta linha que você comenta, levando em consideração a regra de
>>> negócio ela foi lançada em 30/05/2012 certo pois, o sistema guarda no
>>> campo DATA_LANCAMENTO e que esta data é inserida pelo próprio sistema
>>> ou usuário pode alterar esta data?
>>> Pois você comentou que o dia de hoje é 04/09/2012. Levando em
>>> consideração a última linha que você comenta que só ela deveria
>>> trazer como vencida mas, como se o vencimento é 30/08/2012 e quando
>>> ela foi lançada era 30/05/2012 ou seja ela foi lançada antes de se
> vencer.
>>> Mas, resumindo. Descreva a regra de negócio para possamos entender e
>>> solucionar o problema, é que solicitando apenas o select não fica
>>> muito
>> claro.
>>>
>>> Em 10 de setembro de 2012 08:55, Maycon-Alphametro
>>> <maycon em alphametro.com.br
>>>> escreveu:
>>>
>>>> Bom dia Sandro, primeiramente me desculpe pela demora no retorno,
>>>>
>>>>         Seguinte,fiz um teste com o seu SQL, mais ainda estou com
>>>> problemas, por exemplo o item 1 se eu fizer o seu SQL como a data de
>>>> 30/09/2012 não chegou ele trará a data de 30/06/2012, e isso não é
>>>> verdade pois o item não está vencido, nesse caso ele não deveria
>>>> trazer nada pois eu tenho uma data que é superior a data atual.
>>>>
>>>>
>>>> -----Mensagem original-----
>>>> De: lista-bounces em firebase.com.br
>>>> [mailto:lista-bounces em firebase.com.br]
>>>> Em
>>>> nome de Sandro Souza
>>>> Enviada em: quarta-feira, 5 de setembro de 2012 12:01
>>>> Para: FireBase
>>>> Assunto: Re: [firebase-br] Ajuda com SQL e datas
>>>>
>>>> Bom dia/tarde Maycon.
>>>>
>>>> Não entendi muito bem a sua lógica, mas vou dar a minha humilde
>>>> contribuição.
>>>>
>>>> Se devemos considerar apenas os lançamentos mais atuais (com data de
>>>> vencimento maior) de cada item, então talvez os seguintes SQLs sirvam:
>>>>
>>>> 1 - Selecionando a maior data de vencimento de cada item da tabela A:
>>>> *
>>>> SELECT
>>>>   COD_TABELA_A ITEM,
>>>>   MAX(DATA_VENCIMENTO) VENCIMENTO
>>>> FROM
>>>>   B
>>>> GROUP BY
>>>>   COD_TABELA_A*
>>>>
>>>> 2 - Aproventando a consulta anterior para listar os itens vencidos:
>>>>
>>>> *SELECT
>>>>   X.ITEM,
>>>>   A.DESCRICAO,
>>>>   X.VENCIMENTO
>>>> FROM (
>>>>   SELECT
>>>>     COD_TABELA_A ITEM,
>>>>     MAX(DATA_VENCIMENTO) VENCIMENTO
>>>>   FROM
>>>>     B
>>>>   GROUP BY
>>>>     COD_TABELA_A) X,
>>>>   A A
>>>> WHERE
>>>>   (X.VENCIMENTO < CURRENT_TIMESTAMP)AND
>>>>   (A.COD = X.ITEM)
>>>> ORDER BY
>>>>   A.DESCRICAO*
>>>>
>>>> Espero ter ajudado mais que atrapalhado. :D
>>>>
>>>> Em 4 de setembro de 2012 18:09, Maycon-Alphametro
>>>> <maycon em alphametro.com.br>escreveu:
>>>>
>>>> > Senhores boa tarde,
>>>> >
>>>> >         Tenho duas tabelas,
>>>> >
>>>> > Tabela A
>>>> > COD     DESCRICAO       IDENTIFICACAO
>>>> > 1       laranja a
>>>> > 2       abacate b
>>>> > 3       abobrinha       c
>>>> > 4       peixe   d
>>>> > 5       tomate  e
>>>> >
>>>> > Tabela B
>>>> > COD     COD_TABELA _A   DATA_LANCAMENTO DATA_VENCIMENTO
>>>> > 1       1                       31/01/2012      31/03/2012
>>>> > 2       1                       31/03/2012      30/06/2012
>>>> > 3       1                       30/06/2012      30/09/2012
>>>> > 4       4                       25/06/2012      25/09/2012
>>>> > 5       2                       31/12/2011      28/02/2012
>>>> > 6       2                       28/02/2012      30/05/2012
>>>> > 7       2                       30/05/2012      30/08/2012
>>>> >
>>>> > Eu preciso saber tudo o que está vencido, minha consulta deveria
>>>> > trazer somente os itens que tivessem data de vencimento anterior a
>>>> > data atual, porém desconsiderar os lançamentos anteriores para o
>>>> > item exemplo,
>>>> >
>>>> > o item 1 da tabela A tem 3 lançamentos, porém o último ainda não
>>>> > venceu, então não tem itens vencidos
>>>> >
>>>> > o item 2 da tabela A tem 3 lançamentos porém tem um que já está
>>>> > vencido desde 30/08/2012, considerando a data de hoje 04/09/2012
>>>> >
>>>> > A quem puder me ajudar muito obrigado.
>>>> >
>>>> > Att
>>>> >
>>>> > Maycon
>>>> >
>>>> >
>>>> > ______________________________________________
>>>> > 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
>>>>
>>> ______________________________________________
>>> 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
>>
>>
>> ______________________________________________
>> 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