Jump to content
Sign in to follow this  
gambas

Achar relação entre tabelas de utilizadores - Código SQL

Recommended Posts

gambas

Boas!

Estou a desenvolver um chat na net estilo facebook.

O meu problema de agora é devolver os 'amigos' de um utilizador.

Ja tenho as tabelas de utilizadores -> id / nome / login / pass

e a tabelha de relacao -> user1 / user2

quanto a tabela de relacao, nao sei se este é o metodo mais adquado, mas a ideia é relacionar duas pessoas e nao haver duplicação,

tomando por ex: o user 10 e 20

o user 10 tanto poderia ser o user1 como o user2 nesta tabela, aplicando-se o mesmo ao user 20. o importante é nunca haver dois registo que tenham estes dois utilizadores, independentemente dos campos.

já andei a procurar e tentar algum codigo sql mas os meu conhecimentos sao muito pouco, gostava que me podesse ajudar nisto se possivel

Share this post


Link to post
Share on other sites
M6

A tabela de relação ela correcta, podes defini-la assim.

Se definires a chave primária dessa tabela através da composição de ambos os campos garantes unicidade.

Para dizeres que A está relacionado com B apenas necessitas de uma entrada que ligue estes dois utilizadores, dado que não há direccionalidade na relação.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
M6

Pois, mas dizeres apenas que necessitas de ajuda não te vai valer de muito...

Ou bem que colocas as tuas dúvidas de forma clara e concreta, ou então ninguém te vai conseguir ajudar...


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
gambas

eu penso que expliquei logo no inicio, mas seja como for eu digo outra vez....

tenho duas tabelas:

utilizadores id / nome / utilizador / pass

relação utilizador1 / utilizador2

e imagina que tenho estes dados:

tabela utilizadores

1 / Antonio / antonio / 1234

2 / Maria / maria / 4567

3 / José / jose / 8976

e a tabela de relações

1 / 2

3 / 1

2 / 3

esta tabela basicamente vai associar o numero de id de cada utilizador a outro para fazer a relação de 'amigos'

e o que queria era o codigo de SQL de um select, que eu ao dar o numero de id de um utilizador, ele me retornasse todos os amigos conforme a tabela geral de utilizadores. o problema é que estou a utilizar na tabela de relações dois campos(utilizador1, utilizador2) em que um id de utilizador pode estar ou num ou noutro campo. já andei a pesquisar na net e nao consegui encontrar.

Share this post


Link to post
Share on other sites
M6

É isto que queres?

select *
from utilizadores as u
left join relacoes as r1 
on u.id = r1.id
left join relacoes as r2
on u.id = r2.id
where u.id = <número de utilizador>

Nota: não te habitues a receber o trabalhinho feito, este caso foi uma excepção...


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
gambas

Obrigado.

Vou testar.

Mas só para que saibas eu procurei bastante na net, e tentei várias maneiras só que não consegui porque não tenho conhecimentos muito sólidos, até porque calculei que fosse com join's mas não consegui chegar a nenhuma solução (estive lá perto).

De qualquer maneira obrigado.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.