Boa tarde pessoal,
Faz alguns dias que pesquiso bastante como fazer um relacionamento de amigos em comum parecido com o do Facebook.
Pesquisei aqui no fórum, na internet e até consegui fazer funcionar algumas partes, mas logo esbarrei em outro problema que não estou conseguindo resolver. Teitei union, join e não consigo.
Quando eu visitar um usuário, eu quero que ele exiba os os amigos em comum que eu tenho com esse usuário.
Tenho 2 tabelas:
table_friends
id_user_friend (campo que grava o id de quem enviou a solicitação de amizade)
id_friend (id do amigo)
table_users
id (id do usuário)
name (nome)
thumb (foto)
Primeiro problema que consegui resolver:
Ex:
table_friends
id_user_friend = '1' e id_friend = '2'.
id_user_friend = '3' e id_friend = '2'.
table_users
id = '1' e name = 'FelipeMike' e thumb = 'Foto'.
id = '2' e name = 'Jéssica' e thumb = 'Foto'.
id = '3' e name = 'André' e thumb = 'Foto'.
Ou seja, o usuário 2 (Jéssica) é um amigo em comum e para eu exibir isso quando visito a página do usuário 3 (André), faço:
SELECT amigos.id_user_friend, amigos.id_friend, amigos_comum.id_user_friend, amigos_comum.id_friend, amigos_comum.date_friend, user.name, user.thumb FROM $this->table_friends amigos JOIN $this->table_friends amigos_comum JOIN $this->table_users usuario ON amigos.id_friend = amigos_comum.id_friend WHERE amigos.id_user_friend = '1' //Meu usuário AND amigos_comum.id_user_friend = '3' //Usuário André AND amigos_comum.id_friend = usuario.id //Exibir o nome e a foto dos amigos em comum ORDER BY amigos_comum.date_friend DESC
Quando eu visitar a página do usuário André, ele me retorno Jéssica como amigo em comum, mas o novo problema está no campo id_friend_user e id_friend na tabela de amigos.
Eu usei no exemplo:
id_user_friend = '1' e id_friend = '2'.
Mas e se aqui fosse invertido:
id_user_friend = '2' e id_friend = '1'.
Como faço para o Select buscar os amigos em comum pelo id do usuário que visito tanto no campo id_user_friend como no campo id_friend?
Alguém poderia me ajudar ou me dar uma idéia?
Muito obrigado desde já!