..:: MX Studio Fóruns ::..: Dúvida com query Última Data - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Dúvida com query Última Data

#1 User is offline   Alex_DTP 

  • Group: Membros
  • Posts: 3
  • Joined: 07-April 08

  Posted 19 December 2008 - 05:54 PM

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":
CÓDIGO
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:
CÓDIGO
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
0

#2 User is offline   Alex_DTP 

  • Group: Membros
  • Posts: 3
  • Joined: 07-April 08

Posted 22 December 2008 - 12:28 PM

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'
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)