Fórum Problema com consulta SQL no Delphi e Banco de dados #493018
21/09/2014
0
select * from contaspagar where data_cadastro >= '2014-09-01' and data_cadastro <= '2014-09-15' and situacao = 'Paga' or situacao = 'Cancelada'
select * from contaspagar where data_cadastro >= '2014-09-01' and data_cadastro <= '2014-09-15' and situacao = 'Aberta' or situacao = 'Cancelada'
Estas linhas acima retornam corretamente o resultado da consulta.
Agora se eu coloco: select * from contaspagar where data_cadastro >= '2014-09-01' and data_cadastro <= '2014-09-15' and situacao = 'Paga' or situacao = 'Aberta', é retornado todos os registro da tabela e se eu "inverter" o Aberta e o Paga ficando assim: select * from contaspagar where data_cadastro >= '2014-09-01' and data_cadastro <= '2014-09-15' and situacao = 'Aberta' or situacao = Paga' o resultado da consulta retorna corretamente. Calma tem mais!
Colocando dessa forma: select * from contaspagar where data_cadastro >= '2014-09-01' and data_cadastro <= '2014-09-15' and situacao = 'Aberta' or situacao = Paga' ele passa a retornar corretamente, mas se eu mudar o critério de pesquisa de data_cadastro para data_vencimento ou data_pagamento aí novamente passa a retornar todos os registros.
O que pode esta acontecendo?
Pedro
Curtir tópico
+ 0Posts
22/09/2014
Rafael Cunha
Tente realizar a consulta conforme exemplo abaixo:
select * from contaspagar where (data_cadastro between '2014-09-01' and '2014-09-15') and (situacao in ('Paga', 'Aberta'))Gostei + 0
22/09/2014
Pedro
Tente realizar a consulta conforme exemplo abaixo:
select * from contaspagar where (data_cadastro between '2014-09-01' and '2014-09-15') and (situacao in ('Paga', 'Aberta'))Amigo Rafael, muito obrigado mesmo! Essa forma como você passou funcionou certinho direto no mysql, vou passar para o Delphi e passar as datas como parâmetro, creio que não vai dar problemas.
Agora qual a diferença dessa forma que você passou para a que eu costumo fazer? Não deveria funcionar igual?
Gostei + 0
22/09/2014
Rafael Cunha
select * from contaspagar where data_cadastro >= '2014-09-01' and data_cadastro <= '2014-09-15' and (situacao = 'Paga' or situacao = 'Cancelada')
Gostei + 0
22/09/2014
Pedro
Deu certo, mas não sabia a explicação. Agora que vc esclareceu eu entendi.
Mais uma vez muito obrigado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)