I have the following query:
SELECT
cp_mensagem.mensagem,
cp_mensagem.dh_envio,
cp_projeto.id as id_projeto,
cp_projeto.nome as nome_projeto,
cp_pessoa.id as id_freelancer,
cp_pessoa.nome as nome_freelancer
FROM cp_mensagem
JOIN cp_projeto ON (cp_projeto.id = cp_mensagem.id_projeto)
JOIN cp_pessoa ON (cp_pessoa.id = cp_mensagem.id_freelancer)
WHERE cp_pessoa.id = 6 AND cp_mensagem.dh_visualizacao is NULL AND cp_mensagem.id_tipo_remetente = 1
ORDER BY cp_mensagem.dh_envio DESC
This query yields the following result:
mensagem | dh_envio | id_projeto | nome_projeto | id_freelancer | nome_freelancer
Olá... | 2014-04-22 11:51:41 | 2 | WebSite | 6 | José
Oi... | 2014-04-19 00:00:00 | 2 | WebSite | 6 | José
To not repeat the id_project and id_freelancer I use GROUP BY, like this:
SELECT
cp_mensagem.mensagem,
cp_mensagem.dh_envio,
cp_projeto.id as id_projeto,
cp_projeto.nome as nome_projeto,
cp_pessoa.id as id_freelancer,
cp_pessoa.nome as nome_freelancer
FROM cp_mensagem
JOIN cp_projeto ON (cp_projeto.id = cp_mensagem.id_projeto)
JOIN cp_pessoa ON (cp_pessoa.id = cp_mensagem.id_freelancer)
WHERE cp_pessoa.id = 6 AND cp_mensagem.dh_visualizacao is NULL AND cp_mensagem.id_tipo_remetente = 1
GROUP BY cp_mensagem.id_projeto, cp_mensagem.id_freelancer
ORDER BY cp_mensagem.dh_envio DESC
This query brings me the following result:
mensagem | dh_envio | id_projeto | nome_projeto | id_freelancer | nome_freelancer
Oi... | 2014-04-19 00:00:00 | 2 | WebSite | 6 | José
I am ordering through dh_envio, but it still brings me the message with the oldest date, how do I get the query to bring me the last message of the group (id_project / id_freelancer)?