Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Esquema de banco de dados de amizade de linha única com obtenção de ID de usuário de uma coluna ou outra


Essa consulta retornaria o valor de Id e o nome dos amigos de #5, conforme mostrado neste Exemplo do SQL Fiddle
SELECT f.FriendId AS FriendId
   , u.Name AS FriendName
FROM FriendTable AS f
INNER JOIN UserAccount AS u ON f.FriendId = u.UserId
WHERE f.UserId = 5

UNION

SELECT f.UserId AS FriendId
   , u.Name AS FriendName
FROM FriendTable AS f
INNER JOIN UserAccount AS u ON f.UserId = u.UserId
WHERE f.FriendId = 5

A UNION irá remover duplicatas, fazendo com que esta consulta funcione tanto para um único registro de amigos, quanto para os 2 registros de amizade que você mencionou no comentário. Você não deve precisar da amizade de 2 registros, porque não há novas informações armazenadas no segundo registro que você não possa obter por ter apenas um registro.