Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Dúvida com query Última Data


Alex_DTP

Pergunta

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.

estou 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

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Resolvido pelo giesta

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'

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...