Ir para conteúdo

POWERED BY:

Arquivado

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

murilo

consulta SQL - três tabelas

Recommended Posts

Meus Amigos,

 

Nunca fui bom com consulta SQL, portanto recorro a ajuda dos mais experientes.

 

Tenho a seguinte estrutura de banco de dados:

 

tblCliente(Id, nome, UF)

tblBoleto(Id, numero, valor, vencimento, pago, dataPagamento)

tblClienteBoleto(Id, IdCliente, IdBoleto)

 

Preciso pegar todos os boletos que estão em atraso (pago = 0 e vencimento < hoje) e informar o nome e UF de cada cliente. O mesmo cliente tem N boletos e, com certeza, muitos tem mais de um em atraso.

 

Posso contar com a ajuda de vocês???

 

Atenciosamente,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá murilo,

 

tblCliente(Id, nome, UF)

tblBoleto(Id, numero, valor, vencimento, pago, dataPagamento)

tblClienteBoleto(Id, IdCliente, IdBoleto)

 

você pode fazer o seguinte:

 

SELECT CB.Id, CB.IdCliente, C.nome, C.UF,

CB.IdBoleto, B.numero, B.valor, B.vencimento, B.pago, B.dataPagamento

FROM tblClienteBoleto CB

INNER JOIN tblCliente C ON (CB.IdCliente = C.Id)

INNER JOIN tblBoleto B ON (CB.IdBoleto = B.Id)

 

-- FORMATO BRASILEIRO (DD/MM/YYYY)

WHERE B.pago = 0 AND B.vencimento < DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), "%d/%m/%Y")

-- FORMATO AMERICANO (YYYY/MM/DD)

-- WHERE B.pago = 0 AND B.vencimento < DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), "%Y/%m/%d")

ORDER BY CB.IdCliente, B.vencimento

 

Outra forma bem mais simples e mais eficaz, seria esta:

 

SELECT CB.Id, CB.IdCliente, C.nome, C.UF,

CB.IdBoleto, B.numero, B.valor, B.vencimento, B.pago, B.dataPagamento,

DATEDIFF(B.dataPagamento, B.vencimento) ATRASOS --ESTA LINHA JÁ CALCULA OS DIAS EM ATRASO

FROM tblClienteBoleto CB

INNER JOIN tblCliente C ON (CB.IdCliente = C.Id)

INNER JOIN tblBoleto B ON (CB.IdBoleto = B.Id)

WHERE B.pago = 0

HAVING ATRASOS > 0

ORDER BY CB.IdCliente, B.vencimento

 

Espero ter ajudado.

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.