Ir para conteúdo

Arquivado

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

Alex_DTP

[Resolvido]  com query Última Data

Recommended Posts

Pessoal,

 

Tenho a seguinte estrutura como exemplo

 

tblDocumentos (docsID, Documento)

tblTramitação (tramID, docsID, Destino, Data)

 

O problema:

Ao pesquisar "Destino" como "Seção b", me retornasse todos os documentos que estão na "seção b", ou seja, que a última data da tramitação do documento contivesse "Seção b".

 

Seria: listar todos os documentos em Tramitação agrupando pela última data e então selecionar somente os documentos que contivessem a "Seção b".

 

Já tentei assim, mas não rola porque mostra todos os documentos quando a última data foi na "Seção b":

SELECT tbl_documentos.docsID, tbl_documentos.documento, tbl_tramitacao.destino, Max(tbl_tramitacao.data) AS UltimaData
FROM tbl_documentos INNER JOIN tbl_tramitacao ON (tbl_documentos.docsID = tbl_tramitacao.docsID)
GROUP BY tbl_documentos.docsID, tbl_documentos.documento, tbl_tramitacao.destino
HAVING tbl_tramitacao.destino = 'Seção b'

Acho que é mais ou menos assim, mas dá erro:

SELECT tbl_documentos.docsID, tbl_documentos.Documento, tbl_tramitacao.Destino, tbl_tramitacao.Data
FROM tbl_documentos LEFT JOIN tbl_tramitacao ON tbl_documentos.docsID = tbl_tramitacao.docsID
WHERE tbl_tramitacao.tramID IN (SELECT tramID, MAX(Data) FROM tbl_tramitacao WHERE "Seção b");

Segue o sql do bd para facilitar:

db_ultima_data.sql

 

Resultado esperado neste bd de exemplo:

Pesquisando "Seção b" deve retornar os documentos B,C,D,E,F que estão (ou tem sua última tramitação) na "Seção b".

Os Docs A e G não devem ser retornados pois encontram-se na seção c e d respectivamente, onde tiveram sua última tramitação.

 

Tô há dias quebrando a cabeça, já tentei várias outras coisas mas não deu certo.

 

Agradeço desde já a ajuda de vocês

 

Alex

Compartilhar este post


Link para o post
Compartilhar em outros sites

tblDocumentos (docsID, Documento)

tblTramitação (tramID, docsID, Destino, Data)

 

 

select * from

from tblTramitação b , tblDocumentos c ,

(

select docsID , Max(Data) ultimo_dia from tblTramitação

group by docsID

) a

where

a.docsID = b.docsID AND

a.docsID = c.docsID AND

b.Data = a.ultimo_dia AND

b.destino = 'Seção b'

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.