Ir para conteúdo

POWERED BY:

Arquivado

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

JB.

[Resolvido] Pegar ultimos posts de todos usuarios

Recommended Posts

bom dia pessoal..

 

to com a seguinte dificuldade:

 

tenho uma tabela usuarios, com usuario.id, usuario.nome e tal..

 

tenho uma tabela usuarios_posts, com usuarios_posts.id, usuarios_posts.usuario_id e tal..

 

(somente os campos id são chave primarias)

 

ai vem a duvida:

 

eu preciso pegar as ultimas postagens de todos os usuarios, e possivel fazer isso em apenas uma consulta?

 

que tecnica eu preciso usar?

 

valeu pela atenção..

Juliano

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT *
FROM usuarios_posts
GROUP BY usuario_id
HAVING max( id )

está retornando um post por cada usuarios.. bem a lista q eu queria

 

mas não está retornando o "ultimo post" e sim o "primeiro" de cada usuario

 

alguma idéia??

 

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT *
FROM usuarios_posts
GROUP BY usuario_id
HAVING max( id )

está retornando um post por cada usuarios.. bem a lista q eu queria

 

mas não está retornando o "ultimo post" e sim o "primeiro" de cada usuario

 

alguma idéia??

 

valeu

 

ID é chave primária de auto-incremento?

 

SELECT *
FROM usuarios_posts
ORDER BY id DESC
GROUP BY usuario_id
HAVING max( id )

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

SELECT *
FROM usuarios_posts
GROUP BY usuario_id
HAVING max( id )

está retornando um post por cada usuarios.. bem a lista q eu queria

 

mas não está retornando o "ultimo post" e sim o "primeiro" de cada usuario

 

alguma idéia??

 

valeu

 

ID é chave primária de auto-incremento?

 

SELECT *
FROM usuarios_posts
ORDER BY id DESC
GROUP BY usuario_id
HAVING max( id )

Sim..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você não notou alteração no Script, também não falei nada ^^

da um Order By na busca e pega os maiores ID, daí serão os últimos.

SELECT *
FROM usuarios_posts
--> ORDER BY id DESC
GROUP BY usuario_id
HAVING max( id )

Compartilhar este post


Link para o post
Compartilhar em outros sites

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY usuario_id

HAVING MAX (id)

 

tentei fazer algumas alterações mas não funcionou.. acho q é por causa do ORDER BY e GROUP BY juntos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ponha o ORDER BY no fim da sql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ponha o ORDER BY no fim da sql

 

e ai Mário..

 

SELECT *
FROM usuarios_posts
GROUP BY usuario_id
HAVING max( id )
ORDER BY id DESC

o sql assim continua pegando apenas os primeiros posts de cada colunista, apenas ordena mostrando o do maior ID ao menor..

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

+ou- isto

 

select id,data
from   usuarios_posts up1
where  up1.data = (select max(up2.data)
                   from usuarios_posts up2
                   where up2.id = up.id)
order by 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta, não deu certo aqui..

 

usando seu código ele retornou todos os registros.. fiz alguma modificações e retornou oq eu queria mas com os primeiros posts, como acontecia antes..

 

acredito que a solução seja usar subquerys

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deveria ter funcionado.

 

O que caracteriza as

ultimas postagens

?

 

Este é o campo que deve ir no Max.

 

O Id por suposição é a chave que identifica o Usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

motta, a estrutura completa da tabela é a seguinte:

 

usuario_posts

id, usuario_id, permissao, publicar_em, titulo, texto, comentarios, created, update

 

eu preciso pegar o ultimo post (todos os campos) de cada um dos usuarios (ids diferentes em usuario_id), não sei se fui claro o suficiente

 

SELECT *
FROM usuarios_posts
GROUP BY usuario_id
HAVING max( id )

esse sql está retornando a lista que eu precisava (uma lista com apenas um post por usuario), mas ele está pegando o primeiro post cadastrado para cada usuario e não o ultimo

 

valeu..

Compartilhar este post


Link para o post
Compartilhar em outros sites

usuario_posts

id, usuario_id, permissao, publicar_em, titulo, texto, comentarios, created, update

 

select *
from usuario_posts up1
where up1.created = (select max(up2.created)
                     from usuario_posts up2
                     where up2.usuario_id = up1.usuario_id)

Supondo que Created indique a criação do registro, senão troque pelo campo que indique o "mais recente".

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.