Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我正试图从数据库中选择共同的朋友,我如何才能做到这一点?_Mysql_Sql - Fatal编程技术网

Mysql 我正试图从数据库中选择共同的朋友,我如何才能做到这一点?

Mysql 我正试图从数据库中选择共同的朋友,我如何才能做到这一点?,mysql,sql,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 DEFA

我正在尝试获取会话用户与其他用户的所有共同好友。 这是我的结构:

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;
My friends\u用户可以包含浏览用户的会话ID或其他人员ID(取决于发送它的人) 对于friends\u friend也一样,它可以包含浏览用户的会话id或发送会话id的人。 那么我怎样才能得到他们共同的朋友呢?任何帮助都是非常感谢的

所以可能是这样的:

friends_user | friends_friend
1                2
2                3
1                3
5                3
2                5
这是sql for my friend选择器,但我需要添加更多代码以获得具有其他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')

顶部查询将获取共同的好友信息,子查询将获取@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')

互联网对共同的朋友说了些什么?我不明白,抱歉,这里有一个伪代码:选择所有用户的朋友作为set1,然后选择所有其他用户的朋友作为set2,然后在他们相同的地方将他们连接在一起-这将给你你要找的列表