2012-10-06 26 views
0

我有一个表友谊系统connections。的列有:MySQL作为一个单一的俱乐部两行

idfromtodirectionliking

每当用户发送好友请求,添加了行和方向被设置为1(1用于正向,2反向)。当其他用户接受好友请求时,会添加另一行并将方向设置为2.

我试图弄清楚获取用户朋友的方法。但是当我做下面的查询时,行会重复。

  SELECT 
       `users`.`name`,`users`.`id` 
      FROM 
       `connections`, 
       `users` 
      WHERE 
       (
        `connections`.`from` = 1234 AND 
        `connections`.`to` = `users`.`id` AND 
        `connections`.`direction` = 1 
       ) 
       OR 
       (
        `connections`.`to` = 1234 AND 
        `connections`.`from` = `users`.`id` AND 
        `connections`.`direction` = 2 
       ) 

如何将此查询修改为包含以便行不重复?

更新:我添加了两行,因为有一列liking。这个值对于“不同的用户连接”是不同的。

示例 - AB可以有0.95的喜好。并且B对于A可能只有0.25

+0

忽略这最后一部分你想要求或接受朋友吗?或两者?和btw为什么要添加另一行?为什么你不能设置状态像request = pending,当另一个接受更新时,太接受 –

+0

接受的朋友。 – kapeels

+0

@ Mr.Alien问题已更新。 – kapeels

回答

0

根据您的意见,您可以添加一个外部查询:

SELECT 
      name, DISTINCT(id) AS id 
FROM 
    (original query) 

你说你添加行,当朋友接受请求。这创建了两行。 更新现有的行与新的方向是不是更有意义? - 根据评论

+0

有一个'喜欢'的专栏。这取决于用户交互。所以我必须添加两行。 – kapeels

+0

明显不会在这里工作...他的设计是错误的.... –

相关问题