Ir para conteúdo

Arquivado

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

J4CK-T3QU1L4

Select complexo de 'amigos'

Recommended Posts

Pessoal, boa tarde.

 

Alguém pode me ajudar a montar um select onde nele traz os dados de 'amigos' de meus 'amigos' por ordem decrescente do número de amigos em comum entre eu e esse amigo de meus amigos...

 

são duas tabelas,

 

tb_amigos:

 

id
id_usuario
id_amigo

 

e a tabela tb_usuario:

 

id
nome
username
foto

 

comecei a montar o sql, porém não fiz essa parte (a mais importante) de organizar por ordem decrescente de usuarios em comum.

 

SELECT u.username, u.foto, u.nome, u.id
FROM tb_usuario AS u
INNER JOIN tb_amigos AS a ON (a.id_usuario = u.id)
WHERE
a.id_amigo <> '".$_SESSION['id']."'
ORDER BY u.id DESC

 

Desde já agradeço...

 

Muito obrigado a todos. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os posts mostram como implementar uma query hierárquica no MySql.

Exemplo dos "amigos".

 

O #12 do segundo link não te ajudou em nada?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi isso.

EU > AMIGO > *Amigo do amigo*

Ordem decrescente de número de amigos em comum entre mim e amigo do amigo.

 

Quer algum amigo específico ou de todos?

 

EDIT: Adiciona um dump, desses dados, não entendi muito bem a sua tb_amigos, você sempre cria 2 registros para a mesma amizade? Ex:

 

usuario amigo

1 2

2 1

 

Ou verifica os 2 campos? Assim caso esteja no amigo retorna usuário, caso esteja como usuário, retorna amigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi isso.

EU > AMIGO > *Amigo do amigo*

Ordem decrescente de número de amigos em comum entre mim e amigo do amigo.

 

Quer algum amigo específico ou de todos?

 

EDIT: Adiciona um dump, desses dados, não entendi muito bem a sua tb_amigos, você sempre cria 2 registros para a mesma amizade? Ex:

 

usuario amigo

1 2

2 1

 

Ou verifica os 2 campos? Assim caso esteja no amigo retorna usuário, caso esteja como usuário, retorna amigo.

 

Exatamente, armazeno os 2 registros, para ficar mais facil na hora da busca.

 

Exatamente isso que você citou, quero que liste todos os usuarios que nao sao meus amigos, por ordem decrescente de amigos nossos em comum, da forma que você citou, quero fazer um sistema para busca de amigos, pesquisar novos amigos...

 

Obrigado pela ajuda desde já.

 

alguem? :cry:

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.