Fala pessoa, beleza!?
Tenho uma dúvida que empacou todo o meu projeto e preciso muito de ajuda!
É o seguinte... dado a tabela abaixo:
post | data | tags
--------+-----------+-------
post3 | 2016 | bbb
post1 | 2018 | aaa
post2 | 2017 | ccc
post1 | 2018 | bbb
post3 | 2016 | aaa
post2 | 2017 | bbb
post2 | 2017 | bbb
post1 | 2018 | ccc
post3 | 2016 | ccc
Eu quero obter como resultado final a seguinte tabela:
post | data | tags
------- +---------- +--------
post1 | 2018 | aaa
post2 | 2017 | bbb
post3 | 2016 | ccc
Ou seja, o que que eu quero fazer é: Primeiramente, ordenar a tabela em função de uma coluna (que neste caso é a coluna data). Quero, em segunda lugar, agrupar em função duma outra coluna (que neste caso é a coluna tag). E quero, por fim, que o resultado da coluna post não se repita.
A primeira e a segunda parte eu sei fazer. Eu aplico a query abaixo...
OBS: A ordem não precisa ser necessariamente esta acima...
SELECT post, `data`, tag
FROM tabela AS t1
WHERE t1.`data` = (
SELECT MAX(t2.`data`)
FROM tabela AS t2
WHERE t1.tag = t2.tag
)
... e obtenho o seguinte resultado:
post | data | tags
------- +---------- +--------
post1 | 2018 | aaa
post1 | 2018 | bbb
post1 | 2018 | ccc
O problema, como vocês podem ver, é que o post1 se repete para todas as tags. E eu não quero que isso aconteça. Quero que todas as linhas sejam preenchidas inteligentemente em função do maior valor dado pela coluna data, mas sem haver repetição na coluna post.
Como posso fazer isso?