Problemas com MAX(), MySQL

18/12/2017

0

Boa tarde!
Estou tendo dificuldades no resultado de uma busca.
Eu possuo duas tabelas: tupload_file e tprocess_asset
				tprocess_asset
id | process_id | asset_id | criacao_dt
1  | blah01     | a048fc61 |2017-06-28 16:02:48
2  | blah01 	| 856e6215 |2017-08-30 15:24:15
3  | blah01 	| 2c268224 |2017-09-01 10:58:47
4  | blah01  	| 7fe97fb4 |2017-09-20 13:58:03
5  | blah01  	| 990d7fd1 |2017-10-02 10:59:55
6  | blah01  	| 500bd250 |2017-10-13 11:08:34
-----------------------------------------------------------------------------------------------------------
				tupload_file
file_name										| asset_id
Produtos_e_Servicos_Microcredito_v5.pdf			| a048fc61
Produtos_e_Servicos_Microcredito_v4.pdf			| 856e6215
Produtos_e_Servicos_Microcredito_v6.pdf			| 2c268224
Produtos_e_Servicos_Microcredito_v5.pdf			| 7fe97fb4
Produtos_e_Servicos_Microcredito_v7.pdf			| 990d7fd1
Produtos e Servic?os_Microcre?dito_v8_baixa.pdf	| 500bd250
----------------------------------------------------------------------------------------------------------- 

Estou tentando extrair as seguintes informações:
Quantidade de uploads feitos no processo e as informações do último upload realizado.
A query que montei foi:
 select 
max(pta.id) as ultimoID
,pta.asset_id as AtivoId
,max(up.name) as NomeArquivo
,count(pta.process_id) as Qtde_Uploads
from tprocess_asset pta 
join tupload_file up on up.business_file_objectid = pta.asset_id
where pta.process_id = ''blah01''; 


O resultado que preciso é:
ultimoID    | AtivoId   |   NomeArquivo                               		| Qtde_Uploads
    4493    | 500bd250  |   Produtos e Servic?os_Microcre?dito_v8_baixa.pdf |   6


E o que estou recebendo é:
ultimoID	| AtivoId	|	NomeArquivo								|	Qtde_Uploads
	4493	| a048fc61	|	Produtos_e_Servicos_Microcredito_v7.pdf	|	6 


Desde já agrdeço.
[]''s
Bruno Oliveira

Bruno Oliveira

Responder

Post mais votado

18/12/2017

Boa noite, cara isso não vai funcionar, se tratando de trazer estes dados que você precisa é necessário fazer um subselect. desta forma:


select
pta.id as ultimoID
,pta.asset_id as AtivoId
,up.name as NomeArquivo
,count(pta.process_id) as Qtde_Uploads
from tprocess_asset pta
join tupload_file up on up.business_file_objectid = pta.asset_id
where pta.criacao_dt = (select max(criacao_dt) from tprocess_asset )


deste modo você faz com que o ultimo dado adicionado apareça na sua consulta...
Seria isso?

Bruno Soares

Bruno Soares
Responder

Mais Posts

18/12/2017

Bruno Oliveira

Corrigindo a última parte:

O resultado que preciso é:
ultimoID    | AtivoId   |   NomeArquivo                                     | Qtde_Uploads
    6    	| 500bd250  |   Produtos e Servic?os_Microcre?dito_v8_baixa.pdf |   6



E o que estou recebendo é:

ultimoID    | AtivoId   |   NomeArquivo                             |   Qtde_Uploads
    6    	| a048fc61  |   Produtos_e_Servicos_Microcredito_v7.pdf |   6
Responder

19/12/2017

Bruno Oliveira

Xará, muito obrigado pelo retorno!<br />
Ajudou sim!<br />
Na verdade consegui chegar no que precisava com a seguinte query:<br />
<br />
<br />
select pta.process_id<br />
,pta.id as ultimoID<br />
,pta.asset_id as AtivoId<br />
,up.name as NomeArquivo<br />
,pta.created_at as DataUpload<br />
from tprocess_asset pta <br />
join tupload_file up on up.business_file_objectid = pta.asset_id<br />
where pta.id in (select max(id) from tprocess_asset group by process_id)<br />
<br />
Muito obrigado de verdade!
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar