Ir para conteúdo

POWERED BY:

Arquivado

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

Jsabino

comando select para encontrar amigos em comum

Recommended Posts

Como sera que e feito a pesquisa de amigos em comum como no facebook, ou como ele busca e identifica que estas pessoas podem ser conhecidas, como e feito esse select alguém tem alguma ideia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso não é um select, com certeza são utilizadas várias técnicas (redes neurais, data mining, etc...). Usando um pouco de lógica daria pra assumir algumas questões básicas, como por exemplo, amigos de amigos que frequentam os mesmos lugares que eu, existe uma grande chance de os conhecer, etc... Óbvio que isto é apenas uma das inúmeras possibilidades para tentar "adivinhar" pessoas que talvez eu conheça.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ESerra disse tudo. Se meus dados batem em um devido local e os da outra pessoa também, já temos isso em comum. Você poderia tentar criar um sisteminha assim... cria um campo ou uma tabela "Referencia" no cadastro, sei lá, e quando o usuário fizer o cadastro no sistema, esse campo irá receber "null". Agora quando ele for curtir por exemplo a página do "forum imasters", ai ele recebe "imasters". Depois, cria uma página com o nome sei lá "Coisas em comum"... lá você faz um select e compara esse campo "Referencia" com num_rows, while, ..... enfim, exibe o usuário que tiver os dados em comum. Acho que é daí já surge as idéias rs. Tenta ai amigão, boa sorte ai no desenvolvimento. Qualquer dúvida posta ai p/ gente ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

È muito simples meu amigo :)

 

quando você entra em um perfil do seu amigo, o facebook faz uma busca dos amigos desta pessoa, quando ele termina a pesquisa, ele pega o resultado e ver se esses amigos dele tambem é amigos seus...

eu tinha acabado de fazer essa logica quando vi este post!!! Como um bom colaborador eu vou disponibilizar o codigo, é bem simples!!!

 

Primeiro vamos criar a tabela( ops: estou utilizado o postgresql, mais creio eu que tambem ira funcionar no mysql caso você esteja utilizando ele):

 

CREATE TABLE amizades
(
id serial NOT NULL,
pessoa1 character varying(40) COLLATE pg_catalog."pt_BR" NOT NULL,
pessoa2 character varying(40) NOT NULL,
CONSTRAINT key PRIMARY KEY (id)
)

 

Explicação: a tabela ira ter 3 campos, pois esse é o fudamental, se você quizer acrescentar mais um campo fique avontade, na minha tabela original tem mais campos, mais esse é o basico para você entender.

 

Campo id: campo padrão que armazena uma contagem de numeros para cada novo registro.

Campo pessoa1: fica o nome da primeira pessoa(ex: João).

Campo pessoa2: fica o nome da segunda pessoa(ex: Maria).

 

Vamos colocar alguns registros:

 

'lucas' vai ser o amigo atual, e 'carol' a amiga que o sistema ira verificar se tem amigos em comum com o 'lucas'

não importa a ordem dos nomes, o sistema irar pegar todos os amigos desta pessoa caso o nome dela esteja no campo 'pessoa1' ou no campo 'pessoa2';

 

(Amigos de 'lucas')

insert into amizades (pessoa1, pessoa2) values ('lucas','carol');

insert into amizades (pessoa1, pessoa2) values ('bruna','lucas');

insert into amizades (pessoa1, pessoa2) values ('lucas','fernanda');

insert into amizades (pessoa1, pessoa2) values ('lucas','kety perry');

 

(Amigos de 'carol')

insert into amizades (pessoa1, pessoa2) values ('carol','kety perry');

insert into amizades (pessoa1, pessoa2) values ('bruna','carol');

insert into amizades (pessoa1, pessoa2) values ('Lorde','carol');

 

So de observar da pra perceber que so tem 2 amigos em comun.

então agora vem o codigo sql:

 

 

 

select id,pessoa1,pessoa2 from amizades where
pessoa1 = 'lucas' and
pessoa2 in( select pessoa2 from amizades where pessoa1 = 'carol' or pessoa2 = 'carol' ) and pessoa2 != 'carol' or
pessoa1 = 'lucas' and
pessoa2 in( select pessoa1 from amizades where pessoa1 = 'carol' or pessoa2 = 'carol' ) and pessoa2 != 'carol'

union

select id,pessoa1,pessoa2 from amizades where
pessoa2 = 'lucas' and
pessoa1 in( select pessoa1 from amizades where pessoa1 = 'carol' or pessoa2 = 'carol' ) and pessoa1 != 'carol' or
pessoa2 = 'lucas' and
pessoa1 in( select pessoa2 from amizades where pessoa1 = 'carol' or pessoa2 = 'carol' ) and pessoa1 != 'carol'

 

 

 

 

no codigo sql acima você troca o nome 'lucas' pela primeira pessoa que você que verificar, e o nome 'carol' pela pessoa que o sistema irar buscar os amigos em comum!!!

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.