Ir para conteúdo

POWERED BY:

Arquivado

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

Fernando Rafael

Criando tabela para amizades em banco (Problemão)!

Recommended Posts

Boa tarde pessoal!

Estou tendo uma dificuldade, faço uma aplicação web onde o usuário podem fazer uma solicitação de amizade, mas estou quebrando a cabeça com a lógica na estrutura do banco, fiz uma tabela onde existe os registros de amizade contendo o ID do usuário é o ID do amigo, no select funciona legal, mas quando foi o amigo que adicionou o usuário o ID deste usuário ficara no outro campo da tabela, ou seja existem 2 colunas em que o ID de cada usuário pode estar espalhando entre ambas, se eu fizer um select para pegar onde existir meu ID pega todos os amigos porem ate eu mesmo serei amigo de mim mesmo.

 

Resumindo:

Teria uma forma de pegar os dados da minha tabela onde existir o ID do usuário mas que não venha esse ID apenas os outros que nó caso são os amigos dele?

 

nesse fórum achei um cara que fez o mesmo que eu:

 

http://www.guj.com.br/java/239139-relacionamento-de-tabela-rede-social

 

Mas ele aparentemente so foi levado em consideração que apenas tal usuário pode adicionar ou que exista uma tabela para cada usuário, logo no select os amigos que nos adicionam não virão ja que eles estarão no campo ID_USER por isso que funciona com esse comando:

 

SELECT * FROM amizade WHERE ID_USER = 1 and ID_USER_AMIGO = 1 and APROVADO = 1

 

Pois a lógica é simples: Se vc me adiciona, eu sou seu amigo e vc o meu.

 

No meu caso fica todas as amizades em uma única tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara valeu, o tópico não era bem o que eu procurava mas me esclareceu uma ideia sobre o "UNION", fiz uma consulta de uma coluna onde tinha na outra o ID do usuário e depois fiz outra consulta inversa pegando assim só os amigos:

 

Aqui esta meu código para ajudar quem está com o mesmo problema, pois já que me ajudaram não custa nada ajudar também:

 

"SELECT u.USUARIOS_ID, u.USUARIOS_NOME, u.USUARIOS_IMAGEM, a.ID_AMIGO_1 FROM usuarios u INNER JOIN amigos a ON u.USUARIOS_ID = a.ID_AMIGO_1 WHERE ID_AMIGO_2 = '$usuario_id' UNION SELECT u.USUARIOS_ID, u.USUARIOS_NOME, u.USUARIOS_IMAGEM, a.ID_AMIGO_2 FROM usuarios u INNER JOIN amigos a ON u.USUARIOS_ID = a.ID_AMIGO_2 WHERE ID_AMIGO_1 = '$usuario_id'";

OBS: uso "iner join" para pegar os dados dos amigos da tabela amigos!

 

Contato:

fernandoleafar@yahoo.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

Blz cara, tava dando uma lida, procurei mais sobre a "revista SQL Magazine Edição 38", gostei do tema e pode me ajudar muito com meu projeto, mas os links de conteudo da página:

 

http://www.devmedia.com.br/revista-sql-magazine-edicao-38/6902

 

não estão pegando já que não sou ascinante, e não encontrei onde ver ou baixar, é um assunto muito interessante e o melhor é que se aprende muito com isso, mas existe uma forma de conseguir apenas este exemplar sem ser ascinante da revista?

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.