Completed

Consulta banco de dados Mysql Avançada com possibilidade de uso em Hibernate

Published on the November 28, 2018 in IT & Programming

About this project

Open

Estou precisando de uma ajuda com uma consulta MySql, na verdade não tentei fazer ela ainda porque estou com muito serviço e tenho que entregar isso rápido para  me "livrar de um cliente".
Vou relatar aqui e vou disponibilizar um esboço da modelagem no excel mesmo, a modelagem no excel está como se fosse Java.
O problema é o seguinte, o sistema é para uma associação.
Ela faz o lote de coleta, que é o lote que envia as doações para cobrança com o mensageiro(office boy) e as doações ficam em status(situaçãoDoacao- em coleta).
O mensageiro ao retornar, é feito o lote de retorno dessas doações, podendo voltar: Recebida, Recebida com alteração de valor, Cancelada, Confirmada(onde será feita nova coleta).
A associação trabalha com um fechamento mensal de doações, onde ela apura a última situação da doação no período.
É Essa apuração que preciso fazer, saber qual a situação da doação por período, de modo que saiba o quanto cada operadora fez de forma agrupada e detalhada.
Estou encaminhando o modelo dos relatórios também para embasamento.
Preciso de uma consulta otimizada, onde não tenha que fazer várias para fazer um relatório.

Segue uma consulta que estava tentando fazer, pra servir de base:
1-detalhada
SELECT operador.id,operador.cod AS codOperador,operador.nome AS nomeOperador,d.vr,partDoador.cod AS codDoador,partDoador.nome AS nomeDoador,lrd.situacaodoacao AS situacaoDoacao,
lrd.dtBaixa AS dtRecebimento  FROM Doacao d
left join doacaoloteretorno dlr on dlr.Iddoacao=d.id
left join loterectodoacao lrd on lrd.id=dlr.Idloteretornodoacao
left join funcionario operador on operador.id=d.Idoperresponsavel
left join lotedoacao ld on ld.id=d.Idlotedoacao
left join participante partdoador on ld.idPartDoador=Partdoador.id
left join transacaoconta transbaixa on transbaixa.id=lrd.idTransBaixa
WHERE operador.idPartGer=1
AND lrd.Dtbaixa between "2018-12-01" and "2018-12-31"
order by operador.nome,lrd.situacaoDoacao;

2- agrupada
SELECT operador.cod AS codOperador,operador.nome AS nomeOperador,SUM(d.vr) AS vrSomaDoacoes,lrd.situacaodoacao AS situacaoDoacao
FROM Doacao d
left join doacaoloteretorno dlr on dlr.Iddoacao=d.id
left join loterectodoacao lrd on lrd.id=dlr.Idloteretornodoacao
left join funcionario operador on operador.id=d.Idoperresponsavel
left join lotedoacao ld on ld.id=d.Idlotedoacao
left join participante partdoador on ld.idPartDoador=partDoador.id
WHERE operador.idPartGer=1
And lrd.dtbaixa between "2018-12-01" and "2018-12-31"
group by operador.cod,lrd.Situacaodoacao
order by operador.nome,d.situacaoDoacao;


Nessas consultas não está pegando a última e sim todas situações do período. Quero a última apenas, detalhado e agrupado.



LoteRectoDoacao = LoteRetornoDoacao

Edit()
Preciso agrupar por ultima situação da doação, seja ela em lotecoleta(dtColeta) ou loterectoDoacao/loteretornodoacao (dtBaixa). Quando estiver em lote de coleta a situação será sempre em coleta, quando a última situação no período estiver no loterectodoacao/loteretornodoacao será necessário pegar a situação que estiver nele.

Category IT & Programming
Subcategory Web development
What is the scope of the project? Small change or bug
Is this a project or a position? Project
I currently have I have specifications
Required availability As needed
Experience in this type of projects Yes (I have managed this kind of project before)
API Integrations Other (Other APIs)
Roles needed Developer

Delivery term: November 29, 2018

Skills needed

Other projects posted by M. P.