我正在尝试从数据库中选择共同的朋友,我该怎么做呢?

时间:2016-03-15 18:29:05

标签: mysql sql

我正在尝试让会话用户与其他用户共享所有朋友。 这是我的结构:

CREATE TABLE `friends` (
  `friends_id` int(11) NOT NULL,
  `friends_user` int(11) NOT NULL,
  `friends_friend` int(11) NOT NULL,
  `friends_date_added` datetime NOT NULL,
  `friends_enabled` varchar(15) NOT NULL DEFAULT 'enabled'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我的friends_user可以包含浏览用户的会话ID或其他人ID(取决于发送者) 和friends_friend一样,可以包含浏览用户的会话ID,也可以包含发送它的人。 那么我怎样才能得到他们共同的朋友呢?任何帮助都会受到极大的影响。

所以它可能是这样的:

friends_user | friends_friend
1                2
2                3
1                3
5                3
2                5

这是我朋友选择器的sql,但是我需要添加更多代码来与另一个id共享朋友:

SELECT * FROM friends 

    LEFT JOIN users 
        ON users.user_id = friends.friends_user AND friends.friends_user != ?
        OR users.user_id = friends.friends_friend AND friends.friends_friend != ?
    LEFT JOIN user_personal_information
        ON users.user_id = user_personal_information.user_personal_information_user

    WHERE (friends_user = ?
        AND friends_enabled = 'enabled'
        AND users.user_enabled = 'enabled')

    OR (friends_friend = ?
        AND friends_enabled = 'enabled'
        AND users.user_enabled = 'enabled')

1 个答案:

答案 0 :(得分:0)

热门查询为您提供共同的朋友信息,子查询应该为您提供@myid和@theirid分享的朋友

SELECT  *
FROM    users
WHERE   users.user_id IN (SELECT    me.friends_friend
                          FROM      friends AS me
                                    JOIN friends AS them ON me.friends_friend = them.friends_friend
                          WHERE     me.friend_user = @myid
                                    AND them.friend_user = @theirid
                                    AND me.friends_enabled = 'enabled'
                                    AND them.friends_enabled = 'enabled')