Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

k9studio

[Resolvido] Consulta mysql

Recommended Posts

Bom dia pessoal!

 

Estou meio errolado em fazer uma consulta e imprimir na tela.

 

Seguinte:

tenho uma tabela de vencimentos

minha consulta seria pegar todos os vencimentos em atraso menos o do mes corrente.

 

alguem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, fiz alguns teste aqui e encontrei a sequinte instrução SQL, é só você adaptar a sua instrução:

 

SELECT CURRENT_DATE - INTERVAL (DAYOFMONTH(CURRENT_DATE) + 1) DAY AS ULTIMA_DATA

 

Esta instrução sempre vai retornar o último dia mês anterior a data de hoje, pegando o exemplo da data de hoje 06/08/2010, retorna 30/07/2010.

 

Espero ter ajudado!

 

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo,

 

Veja como instrução que fiz mais não fucionou, pega todos vencimentos do id_cliente e deveria pegar do mes anterior ao ataul

 

SELECT id_cliente, SUM(valor_venc) as total FROM vencimentos WHERE id_cliente = '102' and diavencimento = '2010-08-10' < now() and status_vence='off'

 

Onde errei?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz um teste no seu banco de dados aí:


SELECT id_cliente, SUM(valor_venc) as total
FROM vencimentos 
WHERE id_cliente = '102' and diavencimento <= (CURRENT_DATE - INTERVAL (DAYOFMONTH(CURRENT_DATE) + 1) DAY) and status_vence='off';

 

Vai listar todos os vencimentos até a última data do último mês, este mês corrente não vai sair.

 

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz um teste no seu banco de dados aí:


SELECT id_cliente, SUM(valor_venc) as total
FROM vencimentos 
WHERE id_cliente = '102' and diavencimento <= (CURRENT_DATE - INTERVAL (DAYOFMONTH(CURRENT_DATE) + 1) DAY) and status_vence='off';

 

Vai listar todos os vencimentos até a última data do último mês, este mês corrente não vai sair.

 

Até mais.

 

Olá Amigo,

 

Tá funcionando pegando do mes corrente como mencionei, me desculpe, na realidade eu queria que pegasse do ultimo vencimento em vez de listar pelo mes corrente.

tem como fazer?

Desculpe, se puder dar mais essa força

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, acho que não entendi, você quer listar todos os débitos vencidos até ontem, por exemplo.

 

Olá Amigo,

 

Listar todos vencimentos anterior ao ultimo vencimento

exemp:

se vecimento 17/07/2010

listar todos os vencimentos anterios

do cliente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que agora vai!

 

Fiz o seguinte teste:

 

Tabela: vencimentos

id 	id_cliente 	valor_venc 	diavencimento 	status_vence
1 	102 		100.00 		2010-06-01 	Off
2 	102 		100.00 		2010-07-01 	Off
3 	102 		100.00 		2010-08-01 	Off
4 	102 		100.00 		2010-09-01 	Off
5	111		100.00		2010-06-01	Off

De acordo com a sua explicação, você quer listar o total dos débitos anteriores a última data vencida, no caso 01/08/2010 e não do último débito que é 01/09/2010.

Para isto fiz a seguinte instrução SQL:

 

SELECT id_cliente, SUM(valor_venc) as total 
FROM vencimentos 
WHERE id_cliente =102 AND status_vence='off' AND diavencimento < (
SELECT diavencimento 
FROM vencimentos 
WHERE id_cliente=102 AND status_vence='off' AND diavencimento < CURRENT_DATE ORDER BY diavencimento DESC LIMIT 0,1)

 

Resultado:

 

id_cliente	total
102		200.00

É a soma das datas 01/06/2010 e 01/07/2010, ambas anteriores ao último vencimento 01/08/2010.

 

Espero que seja isto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Amigo,

 

Desculpe acho que não lhe expliquei deireito:

 

Digamos que o cliente tem 5 venciementos:

 

Vencimento_1 2010-03-17 valor 100,00

Vencimento_2 2010-04-17 valor 100,00

Vencimento_3 2010-05-17 valor 100,00

Vencimento_4 2010-06-17 valor 100,00

Vencimento_5 2010-07-17 valor 100,00

(mes 8/2010 ainda vai ser lancado)

 

na instrucao eu chamo id_cliente =102 and vencimento_3

entaum somar vencimento_1 e venciemnto_2

 

e se chamar

na instrucao id_cliente =102 and vencimento_5

somar vencimento_1, venciemnto_2,venciemnto_3, venciemnto_4

 

seria isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Amigo,

 

Desculpe acho que não lhe expliquei deireito:

 

Digamos que o cliente tem 5 venciementos:

 

Vencimento_1 2010-03-17 valor 100,00

Vencimento_2 2010-04-17 valor 100,00

Vencimento_3 2010-05-17 valor 100,00

Vencimento_4 2010-06-17 valor 100,00

Vencimento_5 2010-07-17 valor 100,00

(mes 8/2010 ainda vai ser lancado)

na instrucao eu chamo id_cliente =102 and vencimento_3

entaum somar vencimento_1 e venciemnto_2

 

SELECT id_cliente, SUM(valor_venc) as total 
FROM vencimentos 
WHERE id_cliente =102 AND status_vence='off' AND diavencimento < '2010-05-17'

 

 

e se chamar

na instrucao id_cliente =102 and vencimento_5

somar vencimento_1, venciemnto_2,venciemnto_3, venciemnto_4

 

SELECT id_cliente, SUM(valor_venc) as total 
FROM vencimentos 
WHERE id_cliente =102 AND status_vence='off' AND diavencimento < '2010-07-17'

 

As instruções são baseadas na tabela de exemplo que você informou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Amigo,

 

Funcionou 100%, muito obrigado!!!

 

Ola Amigo,

 

Funcionou 100%, muito obrigado!!!

 

No server local funciona quando mando para web dar esse erro pode ajudar?

Query: SELECT id_cliente, SUM(valor_venc) as total FROM vencimentos WHERE id_cliente =102 AND status_vence='off' AND diavencimento < '2010-07-17'
Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause

Resolvido, obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.