JB. 0 Denunciar post Postado Novembro 18, 2010 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
Motta 645 Denunciar post Postado Novembro 18, 2010 Use o Max, veja o manual ou esteexemplo. Compartilhar este post Link para o post Compartilhar em outros sites
JB. 0 Denunciar post Postado Novembro 18, 2010 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
Deleu 0 Denunciar post Postado Novembro 18, 2010 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
JB. 0 Denunciar post Postado Novembro 18, 2010 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
Deleu 0 Denunciar post Postado Novembro 18, 2010 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
JB. 0 Denunciar post Postado Novembro 18, 2010 #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
Mário Monteiro 179 Denunciar post Postado Novembro 18, 2010 Ponha o ORDER BY no fim da sql Compartilhar este post Link para o post Compartilhar em outros sites
JB. 0 Denunciar post Postado Novembro 19, 2010 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
Motta 645 Denunciar post Postado Novembro 19, 2010 +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
JB. 0 Denunciar post Postado Novembro 19, 2010 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
Motta 645 Denunciar post Postado Novembro 19, 2010 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
JB. 0 Denunciar post Postado Novembro 19, 2010 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
Motta 645 Denunciar post Postado Novembro 19, 2010 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
JB. 0 Denunciar post Postado Novembro 19, 2010 Grande! era isso ae.. valeu Motta! valeu pela disponibilidade.. abraço Compartilhar este post Link para o post Compartilhar em outros sites