Realizado

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

Publicado em 28 de Novembro de 2018 dias na TI e Programação

Sobre este projeto

Aberto

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.

Categoria TI e Programação
Subcategoria Programação
Qual é o alcance do projeto? Bug ou alteração pequena
Isso é um projeto ou uma posição de trabalho? Um projeto
Tenho, atualmente Eu tenho especificações
Disponibilidade requerida Conforme necessário
Experiência nesse tipo de projeto Sim (Eu já gerenciei esse tipo de projeto)
Integrações de API Outros (Outras APIs)
Funções necessárias Desenvolvedor

Prazo de Entrega: 29 de Novembro de 2018

Habilidades necessárias

Outro projetos publicados por M. P.