Ir para conteúdo

POWERED BY:

Arquivado

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

diasgabrie

lista de amigos de usuarios

Recommended Posts

olá gente

 

preciso de ajuda de vcs.

estou fazendo um sistema em php, onde cada usuario possui uma tabela de amigos.

 

então existem as seguintes tabelas:

 

CREATE TABLE `amigos` (

`id` INT NOT NULL AUTO_INCREMENT ,

`user` VARCHAR( 50 ) NOT NULL ,

`add` VARCHAR( 50 ) NOT NULL ,

PRIMARY KEY ( `id` )

 

);

 

 

user é quem esta adicionando. e add o amigo adicionado.

 

 

e a tabela posts:

 

CREATE TABLE `posts` (

`id` INT NOT NULL AUTO_INCREMENT ,

`user` VARCHAR( 40 ) NOT NULL ,

`comentario` VARCHAR( 3000 ),

PRIMARY KEY ( `id` )

 

);

 

cada vez que um usuario postar um comentario novo, ele deve aparecer no topo dos favoritos de seus amigos.

 

ira selecionar os amigos do jose por ordem de adição na lista de amigos:

SELECT * FROM favoritos where user='jose' order by id desc

 

 

 

mas eu gostaria de selecionar os amigos de jose por ordem do id do posts e não por ordem do id dos favoritos

como eu faria isso? inner join? mas qual a sintese?

 

 

 

obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigada. mas não deu muito certo. agora estou com o seguinte problema

 

SELECT * FROM favoritos INNER JOIN posts WHERE posts.user = favoritos.add AND favoritos.user = 'joao' order by posts.id desc group by favoritos.add

 

da erro se eu por o order by antes do group by alguem sabe o pq desse erro?

 

mas se eu colocar o contrario

 

SELECT * FROM favoritos INNER JOIN posts WHERE posts.user = favoritos.add AND favoritos.user = 'joao' group by favoritos.add order by posts.id desc

 

ira ordenar pelo id desc dos primeiros posts do usuario e não os ultimos. eu preciso ordenar pelo ultimo id post de cada usuario , não pelo primeiro.

 

como eu posso contornar isso?

obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

da erro se eu por o order by antes do group by alguem sabe o pq desse erro?
é regra de sintaxe de comandos SQL, o order by sempre vai ser o último comando a ser colocado na consulta

 

 

SELECT * FROM favoritos INNER JOIN posts WHERE posts.user = favoritos.add AND favoritos.user = 'joao' group by favoritos.add order by posts.id desc

você não pode usar group by com *, todos os campos que estiverem na frente do FROM, devem estar na cláusula group by. E pq você está usando group by???? você não usa nenhuma função

 

 

a tabela post, o campo user faz referencia com qual campo da tabela amigos ?? (user ou add)?

 

ira ordenar pelo id desc dos primeiros posts do usuario e não os ultimos. eu preciso ordenar pelo ultimo id post de cada usuario , não pelo primeiro.

select a.user, a.add, p.comentario from amigos a 
inner join post p on (a.add = p.user) 
where a.add = 'joao'
order by p.id desc

agora que eu reparei, você está fazendo FROM na tabela favoritos, o que tem nessa tabela???

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá

obrigada pela resposta.

 

testei aqui meio com pressa mas parece que ainda não é o q eu quero.

 

a tabela favoritos é a tabela amigos, só renomiei ela.

 

então, quero agrupar para não mostrar um mesmo usuario na tabela amigos varias vezes, somente a ultima vez q ele atualizou.

 

pra ajudar compreender o problema, quero fazer uma tabela de favoritos tipo do www.flogao.com.br

onde cada usuario tem seus favoritos. e nessa tabela favoritos ira aparecer no topo os usuarios que atualizaram (postaram fotos) por ultimo. se o usuario postar 5 fotos em seguida, vai aparecer ele somente uma vez la no topo, e não as 5 vezes. por isso quero usar o group by.

 

voces tem alguma ideia como posso fazer isso?

 

obrigada mais uma vez!

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.