Ir para conteúdo

POWERED BY:

Arquivado

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

wyllianneo

Escolher entre data mais antiga do mesmo processo

Recommended Posts

Olá pessoal.

Eis o meu problema:

Estou modificando um relatório que possui a seguinte query:

 $sql = "SELECT date_format(DATA,'%Y%m%d') as DATA, XNATUREZA FROM d_pr_desdobramentos, m_processos WHERE m_processos.XPROCESSO=d_pr_desdobramentos.XPROCESSO AND XFASE=1";

e também

$prazo = "SELECT date_format(d_pr_desdobramentos.DATA,'%Y-%m-%d') as DATA, date_format(d_pr_desdobramentos.DATA,'%Y%m%d') as DATAFORMAT, date_format(m_processos.CADASTRAMENTO,'%Y-%m-%d') as CADASTRAMENTO,date_format(m_processos.CADASTRAMENTO,'%Y%m%d') as CADASTRAMENTOFORMAT FROM d_pr_desdobramentos, m_processos WHERE m_processos.XPROCESSO=d_pr_desdobramentos.XPROCESSO AND d_pr_desdobramentos.XFASE='1'";

 

Entretanto, na tabela d_pr_desdobramentos podem haver mais de uma data para um mesmo processo, por exemplo:

DATA---------------XPROCESSO

2003-11-21------------10

2004-11-24------------10

2004-09-03------------11

2004-09-03------------13

 

O que quero fazer é selecionar na query apenas a DATA mais antiga de cada XPROCESSO, mas não estou conseguindo, alguém poderia me dar uma dica?

Agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu entendi direito, basta adicionar no final da query:

 

 ORDER BY DATA DESC LIMIT 1

Isso vai ordenar os resultados decrescentemente pela DATA (alias definido), fazendo com que a mais antigas seja a prmeira.

 

O LIMIT, por sua vez, fará com que apenas o primeiro registro seja retornado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu entendi direito, basta adicionar no final da query:

 

 ORDER BY DATA DESC LIMIT 1

Isso vai ordenar os resultados decrescentemente pela DATA (alias definido), fazendo com que a mais antigas seja a prmeira.

 

O LIMIT, por sua vez, fará com que apenas o primeiro registro seja retornado.

 

Na verdade não funcionou, pois essa listou apenas a data mais antiga de todas, e eu quero a data mais antiga de cada processo.

Obrigado de qualquer forma.

 

Então galera, vi uma outra possibilidade que talvez resolva caso alguém possa me ajudar.

Seguinte, das informações usadas na tabela são os campos: DATA, XFASE e XPROCESSO.

Talvez possa ser feito um IF encadeado ou um CASE para ver se cada XPROCESSO possui apenas 1 DATA e 1 XFASE, e caso exista mais de 1 DATA e 1 XFASE para cada XPROCESSO, pegar somente a DATA e XFASE mais antigos do XPROCESSO.

 

Acredito que com a imagem seja mais fácil de ver.

 

Imagem de exemplo da tabela

 

A única coisa que preciso é pegar a data mais antiga de cada processo, por exemplo na imagem, pegar a data 2003-11-21 para o processo 10(eliminando do retorno da query a outra data do mesmo processo), isso para cada processo da tabela.

 

Obrigado aos que puderem me auxiliar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

select min(DATA) data_mais_antiga, xprocesso from tabela group by xprocesso

 

Opa, essa dica ae me ajudou mesmo rsrs, tive que fazer mais umas adaptações aqui, mas valeu de verdade o auxílio.

Abraço!

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.